14

MSQL データベースがあり、テーブルを反復処理して、WHERE 句が満たされたときにアクションを実行する必要があります。その後、テーブルの最後に到達したら、一番上に戻って最初からやり直します。

現在、私は持っています

cursor = database.cursor()    
cursor.execute("SELECT user_id FROM round WHERE state == -1 AND state = 2")  
round_id = cursor.fetchone()

if round != 5
   ...do stuff

ループしますが、これは明らかに最初のエントリをループし続けるだけです。テーブルを読み取るには for in 関数を使用する必要があると思いますが、mysqldb を使用してこれを行う方法が正確にわかりませんか?

4

2 に答える 2

9

これにより、結果セットの先頭にカーソルが設定され、返された行数がわかります (これについて行ったり来たりしましたが、これは私が見つけた中で最も信頼できるドキュメントです。古い Python MySQLdb lib は実行時に行数を返しました) 、しかし Python データベース API 仕様 v2.0 はそうではなく、これが最も互換性があるはずです)

cursor.execute("SELECT user_id FROM round WHERE state = -1 OR state = 2")
numrows = cursor.rowcount

見返りに得た行数を教えてくれます

for x in xrange(0,numrows):
  row = cursor.fetchone()
  print row[0], "-->", row[1]

各行を反復処理します (x を範囲で列挙する必要はありません)

于 2013-03-13T22:05:50.270 に答える