MySQL-Abfragen von Python ergeben Inkonsistenzen
Ihre Abfrage ruft wahrscheinlich nicht die aktuellsten Daten ab, weil Sie kein Commit durchführen Änderungen an der Datenbank. Standardmäßig setzt MySQL die Isolationsstufe auf „REPEATABLE READ“, was bedeutet, dass nachfolgende Abfragen innerhalb derselben Transaktion den ersten Snapshot der Daten anzeigen und nicht etwaige Änderungen, die während der Transaktion vorgenommen wurden.
Um sicherzustellen, dass Ihre Daten aktiv sind - Bisher müssen Sie die Verbindung nach jeder Abfrage festschreiben. Dadurch wird die aktuelle Transaktion abgeschlossen und die nächste Transaktion vorbereitet, um die neuesten Änderungen aus der Datenbank abzurufen.
Hier ist eine aktualisierte Version Ihres Codes mit dem erforderlichen Commit:
# Main loop
while True:
# SQL query
sql = "SELECT * FROM table"
# Read the database, store as a dictionary
mycursor = mydb.cursor(dictionary=True)
mycursor.execute(sql)
# Store data in rows
myresult = mycursor.fetchall()
# Transfer data into list
for row in myresult:
myList[int(row["rowID"])] = (row["a"], row["b"], row["c"])
print(myList[int(row["rowID"])])
# Commit changes!
mydb.commit()
print("---")
sleep(0.1)
Mit dieser Änderung ruft Ihr Code nun während jeder Abfrageschleife die neuesten Daten aus der Datenbank ab.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3