一尘不染

如何有效使用MySQLDB SScursor?

mysql

我必须处理一个很大的结果集(可能是数十万行,有时更多)。
不幸的是,它们需要一次全部检索(在启动时)。

我正在尝试通过使用尽可能少的内存来做到这一点。
通过查看SO,我发现使用SSCursor可能是我想要的,但我仍然不太了解如何正确使用它们。

正在做一个fetchall()从基光标或SScursor相同的(在内存使用的术语)?
我可以一排(或几排)从sscursor的行中“流化”
吗?如果是,这样做的最佳方法是什么?


阅读 355

收藏
2020-05-17

共1个答案

一尘不染

我同意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)
2020-05-17