Python sqlite3 delete 什么都不做

Python sqlite3 delete not doing anything

我对sqlite一窍不通(但有点Pythonista的经验),但我很困惑为什么会这样(Python 2.7,DBPATH是数据库的路径)...

import sqlite3

connection = sqlite3.connect(DBPATH)
cursor = connection.cursor()
query = "SELECT * from jobs"
cursor.execute(query)
print(cursor.fectchall())
query = "DELETE from jobs"
cursor.execute(query)

...输出 table 的内容(因此 table 的名称是正确的)而不改变它。有人能指出显而易见的地方吗?

您在数据库中执行的每个 CUD 操作后都必须 commit()

If you Create, Update or Delete, then commit().

来自手册:

提交()

此方法提交当前事务。如果你不调用这个 方法,自从上次调用 commit() 以来你所做的任何事情都是不可见的 其他数据库连接。如果您想知道为什么看不到您拥有的数据 写入数据库,请检查你没有忘记调用这个方法

相反,您可以在连接时设置 'isolation level',这会自动为您提交。

self.db = sqlite3.connect(self.db_name, isolation_level=None)