Si vous regardez le django.db
module, vous pouvez voir que django.db.connection
est un proxy pour django.db.connections[DEFAULT_DB_ALIAS]
et django.db.connections
est une instance de django.db.utils.ConnectionHandler
.
En mettant cela ensemble, vous devriez pouvoir obtenir une nouvelle connexion comme celle-ci :
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)
Notez que cette fonction ouvrira une nouvelle connexion à chaque fois qu'elle sera appelée et que vous êtes responsable de la fermer. De plus, les API qu'il utilise sont probablement considérées comme internes et peuvent changer sans préavis.
Pour fermer la connexion, il devrait suffire d'appeler .close()
sur l'objet retourné par le create_connection
fonction :
conn = create_connection()
# do some stuff
conn.close()