Python MySQL - SELECT有效但DELETE无效?
我刚开始学习Python和Python的MySQL适配器。我不太确定我是不是漏掉了什么明显的东西:
db = MySQLdb.connect(# db details omitted)
cursor = self.db.cursor()
# WORKS
cursor.execute("SELECT site_id FROM users WHERE username=%s", (username))
record = cursor.fetchone()
# DOES NOT SEEM TO WORK
cursor.execute("DELETE FROM users WHERE username=%s", (username))
有什么想法吗?
4 个回答
0
对于你上面的代码,
只需要加上一个调用 self.db.commit()
的语句。
这个功能可不是小问题:
它可以帮助你避免在查询出错时出现数据损坏的问题。
1
可能你违反了外键约束。
13
我猜你可能在使用一个支持事务的存储引擎,比如InnoDB,但在执行DELETE操作后没有调用db.commit()
。如果你不进行提交,DELETE的效果就会被丢弃。
可以参考这个链接:http://mysql-python.sourceforge.net/FAQ.html#my-data-disappeared-or-won-t-go-away:
从1.2.0版本开始,MySQLdb默认禁用了自动提交,这是DB-API标准(PEP-249)的要求。如果你使用的是InnoDB表或者其他类型的事务表,你需要在关闭连接之前调用connection.commit(),否则你的任何更改都不会被写入数据库。
还有一个类似的问题可以参考:Python MySQLdb更新查询失败