使用命名光标时,在带有postgres的Psycopg2中不允许“选择到”

2024-04-28 20:12:01 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个非常简单的可重复的例子,我还没有看到答案。如果我在光标上没有使用任何名称(默认设置),则一切正常。但是,如果我使用命名光标,突然出现了一个错误,不允许选择进入。有人知道为什么在这种情况下,psycopg2/pg在命名游标和未命名游标之间的查询语法上会有不同的行为吗

(注意,这是一个大型多步骤查询的一部分,该查询包含两个临时表和一个完整的外部联接,以在最后进行比较。使用命名cusor的目的是使潜在的非常大的最终结果不会耗尽所有内存并最终消亡。我可能会从外部联接返回数百万行。)

作品:

>>> cur = conn.cursor()
>>> cur.execute("select NOW() into temporary table foo")
>>> cur.close()

不起作用:

>>> cur = conn.cursor("diff_query")
>>> cur.execute("select NOW() into temporary table foo")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
psycopg2.errors.SyntaxError: SELECT ... INTO is not allowed here
LINE 1: ...URSOR WITHOUT HOLD FOR select NOW() into temporary table foo

Tags: executefootableconnselect命名cursornow