我在更新 MySQL 数据库中的行时遇到了一些问题。这是我要运行的代码:
import MySQLdb
conn=MySQLdb.connect(host="localhost", user="root", passwd="pass", db="dbname")
cursor=conn.cursor()
cursor.execute("UPDATE compinfo SET Co_num=4 WHERE ID=100")
cursor.execute("SELECT Co_num FROM compinfo WHERE ID=100")
results = cursor.fetchall()
for row in results:
print row[0]
print "Number of rows updated: %d" % cursor.rowcount
cursor.close()
conn.close()
我运行这个程序时得到的输出是:
4个
更新的行数:1
它似乎在工作,但如果我从 MySQL 命令行界面 (CLI) 查询数据库,我发现它根本没有更新。但是,如果我从 CLI 输入 UPDATE compinfo SET Co_num=4 WHERE ID=100;
数据库会按预期更新。
我的问题是什么?我在 Windows 机器上运行 Python 2.5.2 和 MySQL 5.1.30。
原文由 Ian Burris 发布,翻译遵循 CC BY-SA 4.0 许可协议
我不确定,但我猜你正在使用 INNODB 表,而且你还没有提交。我相信 MySQLdb 会自动启用事务。
在调用
conn.commit()
之前调用close
。来自 FAQ: 从 1.2.0 开始,MySQLdb 默认禁用自动提交