我在这里失去了什么愚蠢的事情:
>>> cur.execute("select id from tracks")
>>> for row in cur:
... story = random.choice(fortunes) + random.choice(fortunes)
... cur.execute("update tracks set story=%s where id=%s", (story, row[0]))
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
psycopg2.ProgrammingError: no results to fetch
但似乎是结果:
>>> cur.execute("select id from tracks")
>>> for row in cur:
... print(row)
...
(8,)
(45,)
(12,)
(64,)
(1,)
(6,)
答案 0 :(得分:1)
看起来psycopg2不允许交错查询(尽管PostgreSQL可以在后端执行)。如果初始查询不是很大,那么最简单的解决方案就是将结果合并到一个列表中 - 只需将from row in cur:
更改为from row in cur.fetchall():
,您应该是对的。