Je souhaite accéder à l'objet de connexion PSYCOPG2 basse niveau pour utiliser la classe psycopg2.extensions.lobject dans mon projet Django.
from django.db import connection
3 Réponses :
Si vous utilisez Django 1.2+, vous devez probablement changer cela pour:
from django.db import connections['default']
Merci pour l'indice. Et je le ferai. Mais malheureusement, ce n'est toujours pas le lien dont j'ai besoin. C'est essentiellement une enveloppe autour de ma connexion PSYCOPG2.
Vous pouvez voir de La source que de django.db Import Connection code> renvoie un
BasewareWrapper code> pour la DB par défaut. dans le psycopg2 Backend Vous verrez que le
BasewareWrapper CODE> accède à la connexion basse niveau via
Connection.cursor (). Connexion code>. P>.
C'est encore plus facile. Connection.Connection renvoie ce dont j'ai besoin.
@Oliverandrich connexion.Connection code> ne fonctionne pas pour moi dans les commandes de gestion.
django.db.connection code> est un
django.db.backend.postgresql_psycopg2.base.databasewrapper code> là-bas, qui a une connexion
code> de
aucun code>. (Testé à Django 1.8A1.)
Connection.cursor (). Connexion code> semble encombrant mais fonctionne de manière fiable pour moi.
Ces réponses sont bonnes mais non copypassables et avec des documents obsolètes, alors laissez-moi résoudre ce problème.
À partir de version 3 vous Utilisez la connexion brute comme celle
from django.db import connection stmt = "SELECT * FROM foo" with connection.cursor() as cursor: cursor.execute(stmt)
Dans votre exemple, l'objet code> Connection code> est un django defaultConnectionProxy code> instance. La question consiste à accéder à l'objet de connexion PSYCOPG2 sous-jacent que vous pouvez utiliser à l'aide de
Connection.cursor (). Connexion code>.
Ou connexion.connection code>, mais voir la mise en garde du commentaire de Heinrik Heimbueger sous La réponse de Mark Lavin ci-dessus.