【发布时间】:2012-01-14 05:33:08
【问题描述】:
我想访问低级 psycopg2 连接对象以在我的 django 项目中使用 psycopg2.extensions.lobject 类。
from django.db import connection
没有提供我需要的东西。有人可以帮帮我吗?
【问题讨论】:
标签: python django postgresql psycopg2
我想访问低级 psycopg2 连接对象以在我的 django 项目中使用 psycopg2.extensions.lobject 类。
from django.db import connection
没有提供我需要的东西。有人可以帮帮我吗?
【问题讨论】:
标签: python django postgresql psycopg2
你可以看到from the sourcefrom django.db import connection为默认数据库返回DatabaseWrapper。 In the psycopg2 backend 你会看到DatabaseWrapper 通过connection.cursor().connection 访问低级连接。
【讨论】:
connection.connection 在管理命令中对我不起作用。 django.db.connection 是一个django.db.backends.postgresql_psycopg2.base.DatabaseWrapper,它有一个connection 的None。 (在 Django 1.8a1 中测试。)connection.cursor().connection 看起来很麻烦,但对我来说工作可靠。
这些答案很好,但不能复制粘贴并且文档过时,所以让我来解决这个问题。
从version 3 开始,您就使用这样的原始连接
from django.db import connection
stmt = "SELECT * FROM foo"
with connection.cursor() as cursor:
cursor.execute(stmt)
【讨论】:
connection 对象是 Django DefaultConnectionProxy 实例。问题是关于访问底层 psycopg2 连接对象,您可以使用 connection.cursor().connection 来完成。
connection.connection,但请参阅上面Mark Lavin's answer 下Heinrik Heimbueger 评论中的警告。
如果您使用的是 django 1.2+,您可能应该将其更改为:
from django.db import connections['default']
或类似的东西。
【讨论】: