39

我有一个需要更新 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 :以正确的行数打印,其中 aRadioID为 11。如果我将 更改为RadioID表中不存在的另一个数字,它将显示Row(s) were updated :0。但是数据库实际上并没有更新。CurrentState字段保持不变。如果我将 SQL 语句复制并粘贴到 PHPMyAdmin 中,它可以正常工作。

4

3 回答 3

96

采用

dbb.commit()

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

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

于 2013-03-07T13:03:34.047 回答
27

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

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

dbb.autocommit(True)

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

于 2014-06-14T04:48:10.107 回答
10

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

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

添加自动提交=真

于 2017-12-26T09:29:06.240 回答