我遇到一个奇怪的问题。通过服务器端游标进行迭代时,经过几次迭代(非常快),我的迭代器在几分钟后最终挂起,最终超时:
connectstring = "my connection string"
self._conn = psycopg2.connect(connectstring)
self._cur = self._conn.cursor(my_cursor')
self._cur.itersize = 2000
for result in cursor:
yield result
上面的迭代器总是在返回50K条记录后停止。返回的记录数取决于itersize参数,但此查询最终应返回约2500万条记录。
如果使用fetchmany,则行为类似,并且仅在针对本地托管服务器运行时才会发生。从另一个客户端使用VPN连接到同一服务器的速度较慢,但会返回完整的3500万条记录。