Python 使用 MySQL 数据库进行事务处理完整示例
事务(Transaction)是数据库操作的最小逻辑单元,遵循ACID 原则:
- 原子性(Atomicity):要么全部执行成功,要么全部失败回滚
- 一致性(Consistency):执行前后数据库状态保持一致
- 隔离性(Isolation):多个事务互不干扰
- 持久性(Durability):提交后数据永久保存
Python操作MySQL时,默认是自动提交(autocommit)模式(执行单条SQL会立即生效),而事务处理需要先关闭自动提交,手动控制提交/回滚。
二、完整事务处理代码示例
以「转账场景」为例(经典的事务应用场景:A账户扣钱、B账户加钱,必须同时成功/失败):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|
三、关键操作解释
- 关闭自动提交:
connection.autocommit = False是开启事务的核心,关闭后执行的SQL不会立即生效,需手动commit()。 - 事务提交:
connection.commit()仅当所有SQL执行无异常时调用,会将事务内所有操作永久写入数据库。 - 事务回滚:
connection.rollback()仅在捕获到异常时调用,会撤销事务内所有已执行的SQL操作,恢复到事务开始前的状态。 - 异常捕获:
必须用try-except包裹所有事务内的操作,确保任何错误都能触发回滚,避免数据不一致。
四、拓展场景:批量操作事务
如果需要批量插入/更新多条数据,事务同样适用,示例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
|
到此这篇关于Python 使用 MySQL 数据库进行事务处理步骤的文章就介绍到这了
