在SQLite3中,事務管理是通過BEGIN TRANSACTION、COMMIT和ROLLBACK這三個命令來實現的。
BEGIN TRANSACTION:開始一個新的事務。如果沒有指定事務類型,那么默認是DEFERRED(延遲)模式,也就是說,這個事務會等待其他事務結束后才開始。如果指定了IMMEDIATE(立即)模式,那么這個事務會立即開始,不會等待其他事務。
COMMIT:提交當前的事務。如果所有操作都成功,那么所有的更改都會被永久保存。如果有任何操作失敗,那么所有的更改都會被回滾,數據庫會回到事務開始之前的狀態。
ROLLBACK:回滾當前的事務。所有未提交的更改都會被撤銷。
以下是一個簡單的事務管理示例:
import sqlite3
# 連接到數據庫
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
# 開始事務
cursor.execute("BEGIN TRANSACTION")
try:
# 執行一些操作
cursor.execute("INSERT INTO test (col1, col2) VALUES (?, ?)", values1)
cursor.execute("INSERT INTO test (col1, col2) VALUES (?, ?)", values2)
# 提交事務
conn.commit()
except:
# 如果出現錯誤,回滾事務
conn.rollback()
raise
finally:
# 關閉連接
conn.close()
在這個例子中,我們首先連接到數據庫,然后開始一個新的事務。接著,我們嘗試執行一些操作。如果所有操作都成功,我們就提交事務,所有的更改都會被保存。如果有任何操作失敗,我們就回滾事務,所有的更改都會被撤銷。最后,我們關閉數據庫連接。