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