sql >> Base de Datos >  >> RDS >> Mysql

Cómo crear una nueva conexión de base de datos en Django

Si echas un vistazo a django.db módulo, puede ver que django.db.connection es un proxy para django.db.connections[DEFAULT_DB_ALIAS] y django.db.connections es una instancia de django.db.utils.ConnectionHandler .

Poniendo esto junto, debería poder obtener una nueva conexión como esta:

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)

Tenga en cuenta que esta función abrirá una nueva conexión cada vez que se llame y usted es responsable de cerrarla. Además, las API que utiliza probablemente se consideren internas y pueden cambiar sin previo aviso.

Para cerrar la conexión, debería ser suficiente llamar a .close() en el objeto devuelto por create_connection función:

conn = create_connection()
# do some stuff
conn.close()