python postgres我可以获取100万行吗?

我正在使用python中的psycopg2模块从postgres数据库中读取数据,我需要对一列中的所有行执行一些操作,该列有100多万行

我想知道是cur.fetchall()失败还是导致我的服务器停机?(因为我的RAM可能没有那么大,无法容纳所有数据)

q=“从myTable中选择名称;”
当前执行(q)
rows=cur.fetchall()
对于行中的行:
剂量测定法(世界其他地区)

做这件事最聪明的方法是什么

Burhan指出的解决方案通过只获取单行来减少大型数据集的内存使用:

row=cursor.fetchone()

然而,我注意到一行一行地获取数据的速度明显减慢。我通过互联网连接访问外部数据库,这可能是原因之一

事实证明,使用服务器端游标和获取行束是最有效的解决方案。您可以更改sql语句(如在alecxe answers中),但也有使用psycopg2提供的功能的纯python方法:

cursor=conn.cursor(\u新服务器端\u cursor'的名称)
cursor.execute(“'SELECT*fromtable LIMIT 1000000”“”)
尽管如此:
行=游标。取数(5000)
如果不是行:
打破
对于行中的行:
#对row做点什么
通过

您可以在psycopg2 wiki中找到有关服务器端游标的更多信息

发表评论