在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()
在这个例子中,我们首先连接到数据库,然后开始一个新的事务。接着,我们尝试执行一些操作。如果所有操作都成功,我们就提交事务,所有的更改都会被保存。如果有任何操作失败,我们就回滚事务,所有的更改都会被撤销。最后,我们关闭数据库连接。