在Python的sqlite3
库中,如果你想回滚一个事务,你可以使用conn.rollback()
方法。这将撤销自上次调用conn.commit()
以来对数据库所做的所有更改。
下面是一个例子,展示了如何使用conn.rollback()
:
import sqlite3
# 连接到SQLite数据库
conn = sqlite3.connect('test.db')
# 创建一个Cursor:
cursor = conn.cursor()
try:
# 执行一条SQL语句,插入一条记录:
cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
# 引发一个错误:
raise Exception('some error')
except Exception as e:
# 发生错误,回滚事务:
conn.rollback()
print('Error:', e)
finally:
# 关闭Cursor:
cursor.close()
# 关闭Connection:
conn.close()
在这个例子中,我们尝试插入一条记录,然后立即引发一个错误。由于我们在except
块中调用了conn.rollback()
,所以插入操作被撤销,数据库的状态回到了事务开始之前的状态。
请注意,conn.rollback()
只能撤销自上次调用conn.commit()
以来的更改。如果你在调用conn.rollback()
之前没有调用conn.commit()
,那么conn.rollback()
将撤销所有未提交的更改。😊