我这里有这个代码,每秒都在MySQL表上运行一个SELECT查询。 我看到了MySQL表中的变化,但从查询返回的值并没有改变。我需要以某种方式刷新连接吗?
while (flag==0 and count<30):
for x in user_id_arr:
cur.execute("SELECT status FROM user_locations WHERE user_id = %d" % (x))
res = cur.fetchall()
print res
resp_arr = resp_arr + [res[0][0]]
res = None
print resp_arr
if (resp_arr==["accepted","accepted"]):
print "Everyone Accepted"
for x in user_id_arr:
cur.execute("UPDATE user_locations SET status = 'going' WHERE user_id = %d" % (x))
db.commit()
flag=1
else:
print "Not everyone accepted"
resp_arr = []
res = 0
time.sleep(1)
count +=1
(打印用于调试)
答案 0 :(得分:0)
我准备放弃找到你的问题,但我想我可能会有这个问题!
while (flag==0 and count<30):
for x in user_id_arr:
cur.execute("SELECT status FROM user_locations WHERE user_id = %d" % (x))
res = cur.fetchall()
print res
resp_arr = resp_arr + [res[0][0]]
res = None
print resp_arr
if (resp_arr==["accepted","accepted"]):
print "Everyone Accepted"
for x in user_id_arr:
cur.execute("UPDATE user_locations SET status = 'going' WHERE user_id = %d" % (x))
db.commit()
flag=1
它基本上是缩进的。
你的顶部循环遍历user_id_arr但是只保留最后一个x值并转到if语句。您需要修改控件结构缩进和设置的方式,以便第二个循环向下是初始循环的一部分,if语句在其中缩进。
可能是这样的:
while (flag==0 and count<30):
for x in user_id_arr:
cur.execute("SELECT status FROM user_locations WHERE user_id = %d" % (x))
res = cur.fetchall()
print res
resp_arr = resp_arr + [res[0][0]]
res = None
print resp_arr
if (resp_arr==["accepted","accepted"]):
print "Everyone Accepted"
cur.execute("UPDATE user_locations SET status = 'going' WHERE user_id = %d" % (x))
db.commit()
flag=1
else:
print "Not everyone accepted"
resp_arr = []
res = 0
time.sleep(1)
count +=1
答案 1 :(得分:-1)
因为我使用mysqldb库没有刷新选项,但我发现使用db.commit()可以导致刷新,从而解决我的问题。