2017-07-10 3 views
-1

Ich habe diesen Code hier, dass jede Sekunde eine SELECT-Abfrage auf der MySQL-Tabelle ausgeführt wird. Ich sehe die Änderung in der MySQL-Tabelle, aber der Wert, der von der Abfrage zurückgeht, ändert sich nicht. Muss ich die Verbindung irgendwie aktualisieren?Python und MySQL Konnektivität wird nicht aktualisiert

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 

(die Drucke für das Debuggen sind)

Antwort

-1

, weil ich die mysqldb Bibliothek bin mit ihm keine Refresh-Option ist, aber ich fand heraus, mit db.commit() einer Aktualisierung führen kann und damit mein Problem zu lösen .

0

Ich war dabei aufzuhören, Ihr Problem zu finden, aber ich denke, ich könnte es haben!

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 

Es ist im Grunde Einrücken.

Ihre oberste Schleife durchläuft die user_id_arr, behält dann aber nur den letzten x-Wert und geht auf die if-Anweisung. Sie müssen die Art und Weise korrigieren, in der Ihre Kontrollstrukturen eingerückt und eingerichtet werden, so dass die zweite Schleife dort unten Teil der ursprünglichen Schleife ist und die if-Anweisung eingerückt ist.

Wahrscheinlich so:

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 
Verwandte Themen