在Python中,可以使用sqlite3庫(kù)來處理SQLite數(shù)據(jù)庫(kù)的事務(wù)。以下是一個(gè)示例代碼,展示了如何在Python中使用sqlite3庫(kù)進(jìn)行事務(wù)處理:
import sqlite3
# 連接到數(shù)據(jù)庫(kù)
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
try:
# 開始事務(wù)
cursor.execute("BEGIN TRANSACTION")
# 執(zhí)行SQL語(yǔ)句
cursor.execute("INSERT INTO test (col1, col2) VALUES (?, ?)", values1)
cursor.execute("INSERT INTO test (col1, col2) VALUES (?, ?)", values2)
# 提交事務(wù)
conn.commit()
except:
# 發(fā)生異常,回滾事務(wù)
conn.rollback()
raise
finally:
# 關(guān)閉游標(biāo)和連接
cursor.close()
conn.close()
在上面的示例代碼中,我們首先連接到名為example.db的SQLite數(shù)據(jù)庫(kù)。然后,我們使用cursor對(duì)象執(zhí)行SQL語(yǔ)句,并使用BEGIN TRANSACTION開始事務(wù)。接下來,我們執(zhí)行了兩個(gè)INSERT語(yǔ)句,將數(shù)據(jù)插入到test表中。最后,我們使用conn.commit()提交事務(wù)。
如果在執(zhí)行SQL語(yǔ)句時(shí)發(fā)生異常,我們會(huì)捕獲該異常并使用conn.rollback()回滾事務(wù)。這樣可以確保數(shù)據(jù)的一致性,避免因?yàn)楫惓6鴮?dǎo)致的數(shù)據(jù)不一致問題。
無論是否發(fā)生異常,我們都會(huì)在finally塊中使用cursor.close()關(guān)閉游標(biāo),并使用conn.close()關(guān)閉數(shù)據(jù)庫(kù)連接。這樣可以確保資源的正確釋放,避免資源泄漏問題。