我必须处理一个很大的结果集(可能是数十万行,有时更多)。 不幸的是,它们需要一次全部检索(在启动时)。
我正在尝试通过使用尽可能少的内存来做到这一点。 通过查看SO,我发现使用SSCursor可能是我想要的,但我仍然不太了解如何正确使用它们。
SSCursor
正在做一个fetchall()从基光标或SScursor相同的(在内存使用的术语)? 我可以一排(或几排)从sscursor的行中“流化” 吗?如果是,这样做的最佳方法是什么?
fetchall()
我同意Otto Allmendinger的回答,但是要做出明确的Denis Otkidach的评论,这是不使用Otto的fetch()函数即可遍历结果的方法:
import MySQLdb.cursors connection=MySQLdb.connect( host="thehost",user="theuser", passwd="thepassword",db="thedb", cursorclass = MySQLdb.cursors.SSCursor) cursor=connection.cursor() cursor.execute(query) for row in cursor: print(row)