我正在尝试实现一个服务器端游标,以便在从数据库中获取大量数据时“绕过”Django ORM 的弱点。但我不明白应该如何定义命名游标,因为我当前的代码似乎无法正常工作。我以这种方式定义光标:
id = 'cursor%s' % uuid4().hex
connection = psycopg2.connect('my connection string here')
cursor = connection.cursor(id, cursor_factory=psycopg2.extras.RealDictCursor)
游标似乎可以迭代并以python字典的形式返回预期的记录,但是当我尝试关闭它时(cursor.close()
)我得到了异常:
psycopg2 OperationalError: cursor *the generated cursor id* does not exist
怎么回事?!那么我用来从数据库中检索内容的对象是什么?psycopg2 是否使用回退默认(未命名)游标,因为在我的数据库中找不到我定义的游标(如果是这样......我的大问题:在使用 psycopg2 之前必须在 db 级别定义游标?)我是很困惑,你能帮帮我吗?