Python mySQL更新,工作但不更新表

时间:2013-03-07 13:00:22

标签: python mysql sql-update mysql-connector-python

我有一个需要更新mysql数据库的python脚本,到目前为止:

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的正确行数。如果我将RadioID更改为表中不存在的另一个数字,则会显示{{ 1}}。但是,数据库实际上并未更新。 Row(s) were updated :0字段保持不变。如果我将SQL语句复制并传递给PHPMyAdmin,它可以正常工作。

3 个答案:

答案 0 :(得分:80)

使用

dbb.commit()

之后

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

将您“加载”的所有更改提交到mysql服务器

答案 1 :(得分:24)

正如@Lazykiddy指出的那样,你必须在将它们加载到mysql后提交你的更改。

您也可以使用此方法在MySQL连接初始化之后启用自动提交设置:

dbb.autocommit(True)

然后,它将自动提交您在代码执行期间所做的更改。

答案 2 :(得分:3)

这两个答案是正确的。但是,您也可以这样做:

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

添加 autocommit = True