2017-07-10 13 views
-1

私はこのコードを毎秒MySQLテーブルでSELECTクエリを実行するようにしています。 MySQLテーブルの変更が表示されますが、クエリから返される値は変更されていません。何とか接続をリフレッシュする必要がありますか?pythonと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 

(印刷物は、デバッグのためのものです)

答えて

-1

私はMySQLdbはライブラリを使用していますので、何のリフレッシュオプションはありませんが、私はdb.commitを使用した()リフレッシュを引き起こすので、私の問題を解決することができます。

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文に移動します。コントロール構造がインデントして設定する方法を修正する必要があります。そのため、そこの2番目のループは初期ループの一部であり、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 
関連する問題