2017-07-18 2 views
0

メモリに収まらない非常に大きなMySQLテーブルを解析しようとしています。私は、次の午前のアプローチは、pymysqlを使用して、次のとおりです。pythonカーソルで行単位でデータをロード

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

私が観察しています何cur.execute()が熱心にメモリにデータをロードすることです。行ごとに反復することが可能です遅延して

私はこれがLIMITOFFSETの句を組み合わせてできることを認識していますが、より透過的な方法で行うことは可能ですか?あなたは(cur.execute後に)それと結果の数を取得することができます

答えて

0

numrows = cur.rowcount 

その後、あなたはのためのシンプルなでそれらを反復処理することができます。

for num in xrange(0,numrows): 
    row = cursor.fetchone() 
do stuff... 
+0

私は繰り返すことができることを承知しています'cur.execute()'の結果を上回っていますが、問題は実際にデータを読み込むことであり、それは私が '非常に大きなテーブルではできないものではありません。 – adrpino

関連する問題