我正在尝试实现服务器端游标,以便在从数据库中获取大量数据时“绕过”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
WTF?那么我用来从数据库中检索内容的对象是什么? psycopg2 是否使用后备默认(未命名)游标,因为我定义的游标在我的数据库中找不到(如果是这样......我的大问题:在使用 psycopg2 之前必须在数据库级别定义游标?)我是很困惑,你能帮帮我吗?
最佳答案
我犯了一个非常简单和愚蠢的错误,忘记在运行 ./manage 之前运行
导致了这个错误。./manage.py makemigrations
和 ./manage.py migrate
.py test
(我知道这没有回答最初的问题,但由于这是来自 Google 的第一个结果,我想我会做出贡献。希望没关系)
关于python - psycopg2 操作错误 : cursor does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19069722/