Se dai un'occhiata a django.db
modulo, puoi vedere che django.db.connection
è un proxy per django.db.connections[DEFAULT_DB_ALIAS]
e django.db.connections
è un'istanza di django.db.utils.ConnectionHandler
.
Mettendo insieme questo, dovresti essere in grado di ottenere una nuova connessione come questa:
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)
Nota che questa funzione aprirà una nuova connessione ogni volta che viene chiamata e sei responsabile della sua chiusura. Inoltre, le API che utilizza sono probabilmente considerate interne e potrebbero cambiare senza preavviso.
Per chiudere la connessione, dovrebbe essere sufficiente chiamare .close()
sull'oggetto restituito da create_connection
funzione:
conn = create_connection()
# do some stuff
conn.close()