Python MySQLdb迭代表

时间:2013-03-13 21:53:39

标签: python mysql mysql-python

我有一个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确切地做到这一点?

2 个答案:

答案 0 :(得分:10)

在光标中有结果后,您可以在其中进行迭代。

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

答案 1 :(得分:8)

这会将光标设置在结果集的开头并告诉你它返回了多少行(我在这一行上来回走动,但this is the most authoritative documentation我发现,旧的Python MySQLdb lib返回了rowcount在执行时,但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)