Heim >Datenbank >MySQL-Tutorial >Warum werden meine MySQL-Datenbankaktualisierungen mit Python nicht in der Datenbank widergespiegelt?

Warum werden meine MySQL-Datenbankaktualisierungen mit Python nicht in der Datenbank widergespiegelt?

Susan Sarandon
Susan SarandonOriginal
2024-12-06 19:38:14571Durchsuche

Why Aren't My MySQL Database Updates with Python Reflecting in the Database?

Fehlerbehebung bei Datenbankaktualisierungen mit MySQL und Python

Ihr Problem tritt auf, wenn Sie eine MySQL-Datenbank mithilfe der MySQLdb-Bibliothek von Python aktualisieren. Der folgende Code wird ausgeführt:

import MySQLdb

conn=MySQLdb.connect(host="localhost", user="root", passwd="pass", db="dbname")
cursor=conn.cursor()

cursor.execute("UPDATE compinfo SET Co_num=4 WHERE ID=100")
cursor.execute("SELECT Co_num FROM compinfo WHERE ID=100")
results = cursor.fetchall()

for row in results:
    print row[0]

print "Number of rows updated: %d" % cursor.rowcount

cursor.close()
conn.close()

Beim Ausführen dieses Codes scheint er erfolgreich zu sein, was darauf hinweist, dass die Datenbank aktualisiert wurde. Eine anschließende Abfrage über die MySQL-Befehlszeilenschnittstelle zeigt jedoch, dass das Update nicht angewendet wurde.

Ursache

Das Problem liegt im Fehlen eines Commit-Vorgangs. MySQLdb aktiviert Transaktionen standardmäßig und Aktualisierungen erfordern ein explizites Commit, um sie dauerhaft zu machen. Ohne Commit werden Änderungen nicht in der Datenbank gespeichert.

Lösung

Um dieses Problem zu beheben, schließen Sie conn.commit() ein, bevor Sie die Verbindung schließen, wie unten gezeigt:

import MySQLdb

conn=MySQLdb.connect(host="localhost", user="root", passwd="pass", db="dbname")
cursor=conn.cursor()

cursor.execute("UPDATE compinfo SET Co_num=4 WHERE ID=100")
cursor.execute("SELECT Co_num FROM compinfo WHERE ID=100")
results = cursor.fetchall()

for row in results:
    print row[0]

print "Number of rows updated: %d" % cursor.rowcount

**conn.commit()**  # Commit changes to database

cursor.close()
conn.close()

Durch die Einbindung von conn.commit() werden die an der Datenbank vorgenommenen Änderungen erfolgreich beibehalten.

Das obige ist der detaillierte Inhalt vonWarum werden meine MySQL-Datenbankaktualisierungen mit Python nicht in der Datenbank widergespiegelt?. 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