我正在尝试使用pyodbc处理一个非常大的查询,我需要迭代行而不用fetchall()一次性加载它们。
有没有一个好的和有原则的方法来做到这一点?
答案 0 :(得分:12)
当然 - 使用while
圈fetchone
。
http://code.google.com/p/pyodbc/wiki/Cursor#fetchone
row = cursor.fetchone()
while row is not None:
# do something
row = cursor.fetchone()
答案 1 :(得分:6)
如果要批量提取,也可以使用cursor.fetchmany()
(如果不覆盖,则默认为1)
答案 2 :(得分:3)
根据official documentation,游标显然是一个迭代器。因此,您无需创建自定义迭代器/生成器。
如果您要一次处理一行,则可以将游标本身用作迭代器:
cursor.execute("select user_id, user_name from users"):
for row in cursor:
print(row.user_id, row.user_name)