Heim >Datenbank >MySQL-Tutorial >Warum gibt meine Python-MySQL-Abfrage immer wieder dieselben Daten zurück?

Warum gibt meine Python-MySQL-Abfrage immer wieder dieselben Daten zurück?

Linda Hamilton
Linda HamiltonOriginal
2024-11-06 12:29:02677Durchsuche

Why Does My Python MySQL Query Keep Returning the Same Data?

Abfragen von Python zu MySQL, die identische Daten liefern

Das wiederholte Abfragen einer MySQL-Datenbank von Python zum Abrufen dynamischer Daten stellt eine Herausforderung dar. Es ist bekannt, dass das bloße Durchlaufen einer Abfrage in einer Schleife nicht ausreicht, um neue Daten aus der Datenbank abzurufen.

Ihr bereitgestellter Code veranschaulicht dieses Problem:

<code class="python">for i in range(listSize):
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...</code>

Auch bei Versuchen mit fetchall , fetchmany und fetchone, die Ergebnisse bleiben stagnierend.

Die Lösung: Festschreiben der Verbindung

Um dieses Problem zu beheben, muss auf jede Abfrageausführung ein Festschreiben der Verbindung folgen Verbindung. Diese Aktion schließt die laufende Transaktion ab und initiiert eine neue, sodass die nachfolgende Abfrage Änderungen erkennen kann, die während der vorherigen Transaktion vorgenommen wurden.

<code class="python">while True:
    #...
    mycursor = mydb.cursor(dictionary=True)
    mycursor.execute(sql)
    #...
    mydb.commit()
    #...</code>

Isolationsstufen und die REPEATABLE READ-Standardeinstellung

Dieses Konzept basiert auf Isolationsstufen. Standardmäßig verwendet MySQL REPEATABLE READ für InnoDB. Dies bedeutet, dass innerhalb einer Transaktion bei nachfolgenden Lesevorgängen der Snapshot beibehalten wird, der durch den ersten Lesevorgang der Transaktion erstellt wurde. Ohne Commit werden daher bei nachfolgenden Abfragen keine Änderungen erfasst.

Das obige ist der detaillierte Inhalt vonWarum gibt meine Python-MySQL-Abfrage immer wieder dieselben Daten 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