來自Python Sqlite3的檔案
executescript(sql_script)
這是一次執行多個 SQL 陳述句的非標準便捷方法。它首先發出 COMMIT 陳述句,然后執行它作為引數獲取的 SQL 腳本。該方法無視isolation_level;任何事務控制都必須添加到 sql_script。
我的問題: 我正在執行一系列帶有多個陳述句的 sql 腳本,例如:
db = sqlite3.connect(my_db_path)
for sql_file in files:
f = open(sql_file)
update_script = f.read()
f.close()
db.executescript(update_script)
該executescript()方法在執行之前進行提交,因此如果它在程序中間失敗,我無法對所有檔案進行事務控制以回滾到初始狀態,因為它在每次迭代中提交。
我需要一種僅在 for 回圈之后而不是在每次迭代結束時提交的方法。我沒有設法使該方法execute()作業,因為它不支持多個陳述句,而且我也沒有設法使其與executemany()方法一起作業,因為如果我的檔案碰巧只有一個陳述句,它就會失敗。
有什么建議?
uj5u.com熱心網友回復:
如果所有腳本都需要作為一個事務來執行,而不是讀、執行、讀、執行……嘗試讀、讀、讀……執行。換句話說,將所有檔案的內容讀入update_script,然后執行它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/360089.html
上一篇:我看不到應用程式資料庫的最新版本
