Python MySQLdb итерации по таблице

У меня есть база данных 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?

Ответ 1

Это установит курсор в начало результирующего набора и сообщит вам, сколько строк он получил (я перебирал эту статью, но это самая авторитетная документация, которую я нашел, более ранняя версия Python MySQLdb lib возвращала rowcount при выполнении)., но Python Database API Specification 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 с диапазоном)

Ответ 2

Если у вас есть результаты в курсоре, вы можете выполнить итерацию прямо в нем.

cursor = database.cursor()    
cursor.execute("SELECT user_id FROM round WHERE state == -1 AND state = 2")  
for round in cursor:
  if round[0] != 5
    ...do stuff