2017-03-01 3 views
0

Ich habe Probleme, automatisch inkrementierte ID-Spalten aus einer MySQL-Datenbank mit MySQLdb Python-Bibliothek zurückzugeben. Ich habe so etwas wie:Python MySQLdb cursor.lastrowid

sql = """INSERT INTO %s (%s) VALUES (\"%s\")""" %(tbl, colsf, valsf) 
try: 
    cursor.execute(sql) 
    id = cursor.lastrowid 
    db.close() 
except: 
    print "Failed to add to MySQL database: \n%s" %sql 
    print sys.exc_info() 
    db.close() 
    exit() 

jedoch die lastrowid Befehl scheint falsche Werte zurückgegeben werden. Zum Beispiel habe ich versucht, verschiedene ID-Spalten aus der MySQL-Befehlszeile auszudrucken, die zeigt, dass sie leer sind, aber der Wert von lstrowid steigt jedes Mal um 1 an, wenn das Python-Skript ausgeführt wird. Irgendwelche Ideen?

Antwort

0

Es stellte sich heraus, dass die Werte nicht korrekt an die MySQL-Datenbank übergeben wurden. Das Hinzufügen des Befehls "db.commit()" scheint das Problem zu lösen.

sql = """INSERT INTO %s (%s) VALUES (\"%s\")""" %(tbl, colsf, valsf) 
try: 
    cursor.execute(sql) 
    id = cursor.lastrowid 
    cursor.close() 
    db.commit() 
    db.close() 
except: 
    print "Failed to add to MySQL database: \n%s" %sql 
    print sys.exc_info() 
    db.close() 
    exit()