python和MySQL连接不会更新

时间:2017-07-10 16:14:57

标签: python mysql

我这里有这个代码,每秒都在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

(打印用于调试)

2 个答案:

答案 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()可以导致刷新,从而解决我的问题。