2017-03-01 97 views
0

我有問題,從MySQL數據庫使用MySQLdb python庫返回自動遞增的ID列。 我有類似: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() 

然而lastrowid命令似乎返回不正確的值。例如,我嘗試從MySQL命令行中打印出各種id列,它們顯示爲空,但每次運行python腳本時,lastrowid值都會增加1。有任何想法嗎?

回答

0

原來,這些值沒有正確提交到MySQL數據庫,添加「db.commit()」命令似乎解決了這個問題。

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()