Ich versuche, Daten mit dem Befehl MySQLdb executemany wie folgt zu einer Tabelle (test_copy) hinzuzufügen:

db = mdb.connect(host="127.0.0.1",port=3306,user='XXXX',db="test")
cursor = db.cursor()
COM = "insert into test_copy (Short_Model) VALUES (%s)"
VALS = ['213','3232','fd','sadad']
cursor.executemany(COM,VALS)
cursor.close

Hinweis: Name der Tabelle = test_copy, Spaltenname = Short_Model

Problem ist, dass der Befehl fehlerfrei ausgeführt wird, aber wenn ich die Tabelle überprüfe, wurden keine Daten hinzugefügt.

Entschuldigung, wenn dies ein einfaches Problem ist, aber es macht mich in den letzten Stunden verrückt.

Vielen Dank.

4
hoof_hearted 9 Okt. 2012 im 18:57

3 Antworten

Beste Antwort

Vielen Dank an Jon Clements und Abhishek Mishra. Sie haben meine geistige Gesundheit zurückgegeben. Hier ist die endgültige Lösung für Interessierte:

db = mdb.connect(host="127.0.0.1",port=3306,user='xxxx',db="test")
cursor = db.cursor()
COM = "insert into test_copy (Short_Model) VALUES (%s)"
VALS = ['213','3232','fd','sadad']
cursor.executemany(COM,VALS)
db.commit()
4
hoof_hearted 9 Okt. 2012 im 15:11

Ein commit() Aufruf ist erforderlich, um die Dinge in db abzuschließen. In den Dokumenten wird nicht klargestellt, ob executemany die Änderungen automatisch festschreibt. Auch das Aktivieren der automatischen Festschreibung cursor.autocommit(True) kann hilfreich sein.

1
Abhishek Mishra 9 Okt. 2012 im 15:05

cursor.close sollte cursor.close() sein, aber normalerweise möchten Sie cursor.commit(), um sicherzustellen, dass Ihre Änderungen in Ihrer Datenbank wiedergegeben werden.

2
Jon Clements 9 Okt. 2012 im 15:02