我正在尝试了解此代码在后台执行的操作:

import psycopg2

c = psycopg2.connect('db=some_db user=me').cursor()
c.execute('select * from some_table')
for row in c:
    pass

根据PEP 249的理解,这是重复调用Cursor.next(),等效于调用Cursor.fetchone()。但是,psycopg2 docs say the following:



所以我很困惑-当我运行上面的代码时,它是将结果存储在服务器上并一一读取吗,还是一次将所有内容都带过来?

最佳答案

这取决于您如何配置psycopg2。参见 itersize server side cursors

默认情况下,它将所有行提取到客户端内存中,然后仅使用游标遍历读取的行。但是,根据上述文档,您可以改为从服务器端游标配置批量提取。

关于python - 迭代游标时,psycopg2在做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41797720/

10-12 13:06
查看更多