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)
我对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)