Als je de django.db
module, kunt u zien dat django.db.connection
is een proxy voor django.db.connections[DEFAULT_DB_ALIAS]
en django.db.connections
is een instantie van django.db.utils.ConnectionHandler
.
Als je dit samenvoegt, zou je een nieuwe verbinding als volgt moeten kunnen krijgen:
from django.db import connections
from django.db.utils import DEFAULT_DB_ALIAS, load_backend
def create_connection(alias=DEFAULT_DB_ALIAS):
connections.ensure_defaults(alias)
connections.prepare_test_settings(alias)
db = connections.databases[alias]
backend = load_backend(db['ENGINE'])
return backend.DatabaseWrapper(db, alias)
Houd er rekening mee dat deze functie elke keer dat deze wordt aangeroepen een nieuwe verbinding opent en dat u verantwoordelijk bent voor het sluiten ervan. De API's die het gebruikt, worden waarschijnlijk als intern beschouwd en kunnen zonder kennisgeving worden gewijzigd.
Om de verbinding te sluiten, zou het voldoende moeten zijn om .close()
. aan te roepen op het object retour door de create_connection
functie:
conn = create_connection()
# do some stuff
conn.close()