2010-12-06 2 views
1

私はデータベーステーブルからデータを処理しようとしています。それらをすべて同時にロードすると、ほとんどのコンピュータリソースを奪うことになります。現在のコードがありますプログラムによってpythonでオフセット/リミットするmysqldb

cursor.execute("SELECT * from sometable") 
rs = cursor.fetchall() 
. 
# process 1: set operation 
. 
for a in rs: 
    # process 2: put data in another db 

リソースの使用量を減らす方法はありますか?ループの下で行を少しずつ得るのと同じように?

答えて

1

cursor.fetchone()を使用できます。それについてhereを読んでください。使用例:

cursor.execute(query) 
numrows = int(cursor.rowcount) 
for x in range(0,numrows): 
    row = cursor.fetchone() 

また、mysqlのクエリでLIMITを使用することを検討することができます

最後に
cursor.execute("SELECT * from sometable LIMIT 0, 100") 

、スター演算子を使用しないようにのみ、あなたが必要とする列を選択します。

+0

私はそれについて前に読んだことがありますが、詳細の多くを知りませんでした。ここでは、説明を含むリンクとfetchoneの使用例を示します。http://bytes.com/topic/python/answers/25476-nonetype-object-returned-fetchone-mysqldb – kusut

0

cursor.fetchone()を使用すると、その前のSELECT *ステートメントのためにおそらくリソースの問題が発生します。これを行う最良の方法は、LIMITを使用してクエリ結果を制限し、それらをすべてループすることです。

関連する問題