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