关于mysql游标和迭代器
Posted
技术标签:
【中文标题】关于mysql游标和迭代器【英文标题】:About mysql cursor and iterator 【发布时间】:2011-09-05 23:05:47 【问题描述】:假设我有一个 mysql 游标和数据读取。数据量可能很大,我想每次处理一行。
一个简单直接的方法可能是这样的:
while True:
row = cursor.fetchone()
if not row: break
.....
但这看起来不太好,所以我想知道这种方式是否像想象的那样工作:
for row in iter(cursor.fetchall())
我想知道的是:如果我使用iter(cursor.fetchall())
方式,它是先获取所有数据还是一次只获取一行?
【问题讨论】:
【参考方案1】:MySQLdb
游标类实现了iterator protocol,因此您可以简单地这样做:
cursor.execute(sql)
for row in cursor:
print row
...
来自MySQLdb.cursors.BaseCursor的相关代码:
def __iter__(self):
return iter(self.fetchone, None)
【讨论】:
无论如何我都可以在 for 循环中获取列名?以上是关于关于mysql游标和迭代器的主要内容,如果未能解决你的问题,请参考以下文章