Python MySQLdb cursor.lastrowid

问题描述 投票:1回答:1

我在使用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。有任何想法吗?

python mysql python-2.7 mysql-python
1个回答
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()
© www.soinside.com 2019 - 2024. All rights reserved.