Heim  >  Artikel  >  Datenbank  >  Warum geben nachfolgende Abfragen in einer Python-Schleife dieselben Daten aus einer MySQL-Datenbank zurück?

Warum geben nachfolgende Abfragen in einer Python-Schleife dieselben Daten aus einer MySQL-Datenbank zurück?

Susan Sarandon
Susan SarandonOriginal
2024-11-06 07:56:03822Durchsuche

Why Do Subsequent Queries in a Python Loop Return the Same Data from a MySQL Database?

Dynamische Daten aus MySQL mithilfe von Python-Abfragen abrufen

Wenn Sie eine sich schnell ändernde MySQL-Datenbank regelmäßig von Python aus abfragen, erwarten Sie möglicherweise eine schleifenbasierte Abfrage Ansatz, um stets die neuesten Daten abzurufen. Es kann jedoch vorkommen, dass dieselben Daten wiederholt zurückgegeben werden.

Dieses Problem ist auf die Standardisolationsstufe von MySQL, REPEATABLE READ, zurückzuführen. Auf dieser Ebene verwenden Lesevorgänge innerhalb einer Transaktion einen Snapshot der Daten, wie sie zu Beginn der Transaktion vorhanden waren. Nachfolgende Abfragen innerhalb derselben Transaktion lesen aus diesem Snapshot, anstatt ihn zu aktualisieren.

Um dieses Problem zu beheben, müssen Sie die Verbindung nach jeder Abfrage festschreiben und sicherstellen, dass die nächste Transaktion die neuesten Daten abruft. So können Sie Ihren Python-Code ändern:

<code class="python"># 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 !
    mydb.commit()
    print("---")
    sleep (0.1)</code>

Durch das Hinzufügen von mydb.commit() nach jeder Abfrage zwingen Sie MySQL, die Transaktion festzuschreiben und den Snapshot zu aktualisieren. Dadurch können nachfolgende Abfragen auf die aktuellsten Daten zugreifen.

Das obige ist der detaillierte Inhalt vonWarum geben nachfolgende Abfragen in einer Python-Schleife dieselben Daten aus einer MySQL-Datenbank zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn