我有一个约9百万行的查询结果集。使用Python/PyGreSQL,我如何有效地处理大型结果集?
我需要为每一行做一些处理,并且代码目前做到这一点:
query = conn.query(sql)
results = query.getresult()
for row in results:
# blah
我不知道,但我想,getresult()
被拉下整个结果集。是这样吗?我想有一种方法可以根据需要将结果集的块大小分开,但在pg
模块文档中我没有立即看到类似结果。
是否有可能使用pgdb
模块来代替这个模块,或者使用其他方法?
我的问题是关于应用程序机器上的内存 - 如果我能帮上忙,我宁愿不将一百万行同时载入内存。
这更值得担心吗?
根据pygresql文档,getresult返回一个pyquery对象,其中各种列表包含关联查询的所有数据。您需要查看python的替代数据库访问库是否包含查询结果的迭代器。 –