Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créer une nouvelle connexion à la base de données dans Django

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()