2017-03-01 70 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()