我正在尝试了解此代码在后台执行的操作:
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/