CSV-Daten in MySQL in Python laden
Dieses Codefragment versucht, CSV-Daten in eine MySQL-Datenbanktabelle zu laden. Der Benutzer stößt jedoch auf ein Problem, bei dem nichts in die Tabelle eingefügt wird.
Der Code verwendet die Module csv und MySQLdb, um eine CSV-Datei zu lesen und ihre Daten in eine MySQL-Tabelle namens testcsv einzufügen. Es wird erwartet, dass die CSV-Datei drei Spalten enthält: Namen, Klassen und Markierung.
Beim Ausführen des Codes meldet der Benutzer keine Fehlermeldungen, aber die Tabelle bleibt leer. Um dieses Problem zu beheben, fehlt dem Code ein entscheidender Schritt: das Festschreiben der Änderungen an der Datenbank.
In MySQL sind an einer Datenbank vorgenommene Änderungen, wie z. B. das Einfügen neuer Datensätze, erst dann dauerhaft, wenn sie festgeschrieben werden. Standardmäßig arbeitet MySQL im Autocommit-Modus, was bedeutet, dass jede Anweisung automatisch festgeschrieben wird. In bestimmten Situationen, beispielsweise bei der Abwicklung von Transaktionen, ist es jedoch erforderlich, Änderungen explizit festzuschreiben.
Im bereitgestellten Code fehlt nach dem Einfügen jeder Datenzeile die folgende Zeile:
mydb.commit()
Durch das Hinzufügen dieser Zeile wird sichergestellt, dass die von jeder INSERT-Anweisung vorgenommenen Änderungen in die Datenbank übernommen werden. Folglich werden die Daten erfolgreich in die testcsv-Tabelle eingefügt. Der aktualisierte Code sollte wie folgt aussehen:
import csv import MySQLdb mydb = MySQLdb.connect(host='localhost', user='root', passwd='', db='mydb') cursor = mydb.cursor() csv_data = csv.reader(file('students.csv')) for row in csv_data: cursor.execute('INSERT INTO testcsv(names, \ classes, mark )' \ 'VALUES("%s", "%s", "%s")', row) mydb.commit() #close the connection to the database. cursor.close() print "Done"
Durch das Festschreiben der Änderungen nach jedem Einfügevorgang kann der Benutzer sicherstellen, dass die Daten dauerhaft in der MySQL-Tabelle gespeichert werden.
Das obige ist der detaillierte Inhalt vonWarum fügt mein Python-Code keine CSV-Daten in meine MySQL-Datenbank ein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!