我试图解析一个可能不适合内存的非常大的MySQL表。我遵循的方法是使用pymysql
:
db = PyMySQL.connect(**connection_params)
cur = db.cursor()
cur.execute('SELECT * FROM big_table')
for row in cur:
process(row)
我观察到的是cur.execute()
急切地将数据加载到内存中。是否可以按行懒惰?
我知道这可以结合LIMIT
和OFFSET
条款来完成,但有可能以更透明的方式完成吗?
答案 0 :(得分:0)
您可以获得结果数量(cur.execute
之后):
numrows = cur.rowcount
然后,您可以使用简单的for:
迭代它们for num in xrange(0,numrows):
row = cursor.fetchone()
do stuff...