使用python游标逐行加载数据

时间:2017-07-18 09:40:09

标签: python mysql database pymysql

我试图解析一个可能不适合内存的非常大的MySQL表。我遵循的方法是使用pymysql

db = PyMySQL.connect(**connection_params)
cur = db.cursor()
cur.execute('SELECT * FROM big_table')
for row in cur:
    process(row)

我观察到的是cur.execute()急切地将数据加载到内存中。是否可以按行懒惰

进行迭代

我知道这可以结合LIMITOFFSET条款来完成,但有可能以更透明的方式完成吗?

1 个答案:

答案 0 :(得分:0)

您可以获得结果数量(cur.execute之后):

numrows = cur.rowcount

然后,您可以使用简单的for:

迭代它们
for num in xrange(0,numrows):
  row = cursor.fetchone()
do stuff...