Python mySQL 更新,工作正常但未更新表格

42 投票
3 回答
48900 浏览
提问于 2025-04-17 18:15

我有一个Python脚本,需要更新一个MySQL数据库,目前的情况是这样的:

dbb = MySQLdb.connect(host="localhost", 
       user="user", 
       passwd="pass", 
       db="database") 
try:
   curb = dbb.cursor()
   curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11")
   print "Row(s) were updated :" +  str(curb.rowcount)
   curb.close()
except MySQLdb.Error, e:
   print "query failed<br/>"
   print e  

这个脚本会打印出 Row(s) were updated :,后面跟着更新的行数,如果这些行的 RadioID 是11。如果我把 RadioID 改成表里没有的其他数字,它会显示 Row(s) were updated :0。不过,数据库实际上并没有更新,CurrentState 字段还是保持不变。如果我把SQL语句复制粘贴到PHPMyAdmin里执行,它就能正常工作。

3 个回答

13

这两个答案都是对的。不过,你也可以这样做:

dbb = MySQLdb.connect(host="localhost", 
   user="user", 
   passwd="pass", 
   db="database",
   autocommit=True) 

加上 autocommit=True

28

正如@Lazykiddy所说,在你把更改加载到mysql之后,你需要提交这些更改。

你也可以在初始化MySQL连接后,使用这种方法来开启自动提交设置:

dbb.autocommit(True)

这样的话,在你执行代码时所做的更改会自动提交。

99

使用

dbb.commit()

之后,

curb.execute ("UPDATE RadioGroups SET CurrentState=1 WHERE RadioID=11")

来提交你已经“加载”的所有更改到mysql服务器上。

撰写回答