Python MySQL - SELECT工作但不是DELETE吗?

9 python mysql select sql-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))
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Bil*_*win 12

我猜你正在使用支持事务的存储引擎(例如InnoDB),但是db.commit()在DELETE之后你不会调用.如果不提交,则会丢弃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(),否则您的更改都不会写入数据库.

另见这个类似的SO问题: Python MySQLdb更新查询失败