2 回答
TA贡献1788条经验 获得超4个赞
我的问题的答案是:我很笨!昨天晚上我很累,在一个与我的 python 程序同名的子文件夹中查看了错误的 sql 文件。所以它实际上是有效的。请原谅我的愚蠢。
TA贡献1812条经验 获得超5个赞
您可能在控制数据库上的事务时遇到问题,但也可能是连接本身。确保在不同的连接上没有任何未提交的 DML 语句(即INSERT,UPDATE或DELETE在未提交的数据库浏览器中),这可能会导致conn.commit()失败。使用 SQLite,未提交的事务可以锁定整个数据库 - 一小段时间。
尝试确保删除语句有一个新游标并conn.close()在conn.commit(). 在执行代码之前,请确保没有其他连接正在访问数据库 - 包括 DB 浏览器。仅在您关闭应用程序后(对于此测试)才签入 DB 浏览器。这消除了多线程或锁定作为可能的原因。另请参阅SQLite - 数据持久性和SQLite - 控制事务
使用try...except块捕获 DML 语句的所有错误也很有帮助。像这样的东西:
import sqlite3
try:
self.conn = sqlite3.connect('mydb.db')
self.c = conn.cursor()
self.c.execute("DELETE FROM financial_table WHERE ID=?",(entry,))
self.conn.commit()
except sqlite3.Error as e:
print("An error occurred:", e.args[0])
finally:
self.conn.close()
添加回答
举报