我需要一些关于python和mysql的帮助。
我有以下代码,它在无限循环中执行:
db = MySQLdb.connect("127.0.0.1","user","password","dbname" )
while True:
cursor = db.cursor()
cursor.execute("SELECT * FROM requests WHERE status <> 'Finished'")
all_pending_requests = cursor.fetchall()
cursor.close()
第一次运行它时效果很好。但是当我使用像mysql工作台这样的工具或者我自己在终端中键入它时,我会更新一些行并将其状态设置为不是“已完成”的状态。所以通过这样做,下次循环执行时我应该得到那些行,但我什么都没得到。你们现在为什么会发生这种情况呢?
感谢您的帮助。
答案 0 :(得分:1)
我不确定,但会假设您在MySQL和MySQLdb版本中使用InnoDB存储引擎&gt; = 1.2.0。您需要在反映更改之前提交。从版本1.2.0开始,MySQLdb默认禁用自动提交。确认相同的是here。尝试添加db.commit()
作为循环中的最后一行。