„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum liefern meine MySQL-Abfragen von Python inkonsistente Ergebnisse?

Warum liefern meine MySQL-Abfragen von Python inkonsistente Ergebnisse?

Veröffentlicht am 24.11.2024
Durchsuche:579

Why Are My MySQL Queries from Python Returning Inconsistent Results?

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.

Neuestes Tutorial Mehr>

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