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()
添加回答
舉報