Om du tittar på django.db
modul, kan du se den django.db.connection
är en proxy för django.db.connections[DEFAULT_DB_ALIAS]
och django.db.connections
är en instans av django.db.utils.ConnectionHandler
.
Om du sätter ihop detta borde du kunna få en ny anslutning så här:
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)
Observera att denna funktion kommer att öppna en ny anslutning varje gång den anropas och du är ansvarig för att stänga den. Dessutom anses API:erna den använder förmodligen vara interna och kan ändras utan föregående meddelande.
För att stänga anslutningen bör det räcka med att anropa .close()
på objektet returneras av create_connection
funktion:
conn = create_connection()
# do some stuff
conn.close()