发布于 2021-09-07 05:12:10
我认为关键在于服务器端游标文档的第一段(我的粗体):
当执行数据库查询时,--游标通常会获取后端返回的所有记录,并将它们传输到客户端进程。如果查询返回了大量数据,客户端将按比例分配大量内存。
使用“普通”游标,整个结果集将立即传输到客户端。使用命名游标,您可以根据需要在客户机/服务器界面上“拉”数据。
例如,请注意此程序的执行时间不同,这取决于它使用的游标类型(您可能需要调整连接参数):
import psycopg2, time
conn = psycopg2.connect(dbname='template1')
if False:
c = conn.cursor('named')
else:
c = conn.cursor()
c.execute('SELECT GENERATE_SERIES(1,100000000)')
print('Execute ok.')
rows = c.fetchmany(1)
print('Fetch ok.')https://stackoverflow.com/questions/69082479
复制相似问题