【问题标题】:Python mySQL Update, Working but not updating tablePython mySQL 更新,工作但不更新表
【发布时间】:2013-02-22 16:38:54
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    添加 autocommit=True

    【讨论】:

    • 好简单
    【解决方案2】:

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

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

    dbb.autocommit(True)
    

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

    【讨论】:

    • 这引出了一个问题,这个函数是否会使数据库提交发生在每个查询类型之后,即使是不会以任何方式改变表的 SELECT ?
    【解决方案3】:

    使用

    dbb.commit()
    

    之后

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

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

    【讨论】:

    • 谢谢。这已修复它
    猜你喜欢
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 2020-12-20
    • 2015-12-22
    相关资源
    最近更新 更多