我在使用MySQLdb python库从MySQL数据库返回自动递增的ID列时遇到问题。我有类似的东西:
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。有任何想法吗?
原来这些值没有正确地提交到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()