当前位置: 首页 > article >正文

Python 使用 MySQL 数据库进行事务处理完整示例

事务Transaction是数据库操作的最小逻辑单元遵循ACID 原则原子性Atomicity要么全部执行成功要么全部失败回滚一致性Consistency执行前后数据库状态保持一致隔离性Isolation多个事务互不干扰持久性Durability提交后数据永久保存Python操作MySQL时默认是自动提交autocommit模式执行单条SQL会立即生效而事务处理需要先关闭自动提交手动控制提交/回滚。二、完整事务处理代码示例以「转账场景」为例经典的事务应用场景A账户扣钱、B账户加钱必须同时成功/失败1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859importmysql.connectorfrommysql.connectorimportErrordeftransfer_money(from_id, to_id, amount):模拟转账的事务处理:param from_id: 转出账户ID:param to_id: 转入账户ID:param amount: 转账金额connectionNonetry:# 1. 建立数据库连接connectionmysql.connector.connect(hostlocalhost,userroot,password123456,databasetest_db)# 2. 关闭自动提交开启手动事务控制connection.autocommitFalsecursorconnection.cursor()# 3. 执行事务内的多个SQL操作# 步骤1扣除转出账户金额deduct_sqlUPDATE account SET balance balance - %s WHERE id %scursor.execute(deduct_sql, (amount, from_id))# 步骤2增加转入账户金额add_sqlUPDATE account SET balance balance %s WHERE id %scursor.execute(add_sql, (amount, to_id))# 模拟异常可取消注释测试回滚效果# raise Error(模拟转账异常触发回滚)# 4. 所有操作执行成功提交事务connection.commit()print(转账成功事务已提交)exceptError as e:# 5. 发生异常回滚事务撤销所有已执行的SQL操作ifconnection:connection.rollback()print(f转账失败事务已回滚错误信息{e})finally:# 6. 释放资源关闭游标和连接ifconnectionandconnection.is_connected():cursor.close()# 恢复自动提交可选不影响但规范connection.autocommitTrueconnection.close()print(数据库连接已关闭)# 测试前准备 # 先在MySQL中创建测试表和数据# CREATE DATABASE IF NOT EXISTS test_db;# USE test_db;# CREATE TABLE IF NOT EXISTS account (# id INT PRIMARY KEY,# name VARCHAR(50),# balance DECIMAL(10,2)# );# INSERT INTO account (id, name, balance) VALUES (1, 张三, 1000.00), (2, 李四, 500.00);# 执行转账测试 # 测试正常转账张三给李四转200元transfer_money(from_id1, to_id2, amount200.00)三、关键操作解释关闭自动提交connection.autocommit False是开启事务的核心关闭后执行的SQL不会立即生效需手动commit()。事务提交connection.commit()仅当所有SQL执行无异常时调用会将事务内所有操作永久写入数据库。事务回滚connection.rollback()仅在捕获到异常时调用会撤销事务内所有已执行的SQL操作恢复到事务开始前的状态。异常捕获必须用try-except包裹所有事务内的操作确保任何错误都能触发回滚避免数据不一致。四、拓展场景批量操作事务如果需要批量插入/更新多条数据事务同样适用示例如下1234567891011121314151617181920212223242526272829defbatch_insert_users(users):批量插入用户使用事务保证全部成功/失败connectionNonetry:connectionmysql.connector.connect(hostlocalhost,userroot,password123456,databasetest_db)connection.autocommitFalsecursorconnection.cursor()insert_sqlINSERT INTO user (name, age) VALUES (%s, %s)# 批量执行SQL效率更高cursor.executemany(insert_sql, users)connection.commit()print(f批量插入 {cursor.rowcount} 条数据成功)exceptError as e:ifconnection:connection.rollback()print(f批量插入失败事务回滚{e})finally:ifconnectionandconnection.is_connected():cursor.close()connection.autocommitTrueconnection.close()# 测试批量插入user_list[(王五,30), (赵六,28), (孙七,35)]batch_insert_users(user_list)到此这篇关于Python 使用 MySQL 数据库进行事务处理步骤的文章就介绍到这了

相关文章:

Python 使用 MySQL 数据库进行事务处理完整示例

事务(Transaction)是数据库操作的最小逻辑单元,遵循 ACID 原则:原子性(Atomicity):要么全部执行成功,要么全部失败回滚一致性(Consistency):执行前…...

PS 快速抠公章:不用钢笔,3 秒搞定红色印章

在办公自动化、文档处理或设计工作中,经常需要将扫描件、图片中的公章单独提取出来,用于电子文档、合同签署、设计素材等场景。但很多人用PS抠公章后,要么边缘毛糙、色彩失真,要么背景残留白边、文字叠加难以去除,新手…...

【2026奇点智能技术大会权威内参】:AI重构建议的5大底层逻辑与企业落地优先级清单

第一章:AI重构建议的范式跃迁与奇点共识 2026奇点智能技术大会(https://ml-summit.org) 传统推荐系统依赖显式反馈与协同过滤,而新一代AI建议引擎正以隐式意图建模、多模态对齐与反事实推理为基石,实现从“预测用户会点什么”到“协同定义用…...

惠普/H3C服务器iLO管理页面SSA配置详解:如何正确开启HBA模式与安装Windows系统

惠普/H3C服务器iLO管理界面SSA配置实战:HBA模式切换与Windows系统部署全指南 第一次接触惠普或H3C服务器的工程师,往往会被其独特的iLO带外管理系统和SSA存储配置工具所困扰。特别是当需要绕过硬件RAID直接使用单盘进行性能测试时,如何正确配…...

【仅限头部AI基建团队内部流通】生成式AI缓存预热白皮书V2.3:含12个真实Trace分析、预热覆盖率提升至98.6%的关键配置

第一章:生成式AI应用缓存预热机制 2026奇点智能技术大会(https://ml-summit.org) 生成式AI应用在高并发场景下面临显著的首请求延迟(Cold Start Latency)问题,尤其当模型推理服务依赖GPU实例或远程大模型API时,未预热…...

Golang怎么获取当前工作目录_Golang如何用os.Getwd获取程序运行路径【基础】

os.Getwd() 返回进程启动时的工作目录,而非可执行文件所在目录;获取程序自身路径应使用 os.Executable() filepath.Dir(),并用 filepath.Join 拼接路径以确保跨平台兼容性。os.Getwd 返回的是进程启动时的工作目录,不是可执行文件…...

3个技巧让普通鼠标在macOS上媲美专业设备:Mac Mouse Fix终极指南

3个技巧让普通鼠标在macOS上媲美专业设备:Mac Mouse Fix终极指南 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 你是否曾为macOS上…...

Supersonic音乐播放器深度解析:自托管音乐服务的现代化桌面客户端架构

Supersonic音乐播放器深度解析:自托管音乐服务的现代化桌面客户端架构 【免费下载链接】supersonic A lightweight and full-featured cross-platform desktop client for self-hosted music servers 项目地址: https://gitcode.com/gh_mirrors/sup/supersonic …...

PatreonDownloader终极指南:三步搞定创作者内容批量下载

PatreonDownloader终极指南:三步搞定创作者内容批量下载 【免费下载链接】PatreonDownloader Powerful tool for downloading content posted by creators on patreon.com. Supports content hosted on patreon itself as well as external sites (additional plugi…...

OBS多平台直播终极指南:免费插件完整使用教程

OBS多平台直播终极指南:免费插件完整使用教程 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 还在为每次直播只能选择一个平台而苦恼吗?想要将精彩内容同时推送到…...

5个高效方案彻底解决Visual C++运行库安装问题

5个高效方案彻底解决Visual C运行库安装问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是一个强大的Visual C运行库集成安装包&#xf…...

docker下的gitlab的备份 超简单之法

背景:docker下的gitlab,启动命令如下,使用gitlab-rake进行数据备份。备份目录回到绑定的本地的/home/gitlab/data下。gitlab.shdocker stop gitlab docker rm gitlab docker run -d \--privilegedtrue \--hostname 服务器IP \--publish 443:4…...

013、微调中的评估体系:自动化指标与人工评估设计

微调中的评估体系:自动化指标与人工评估设计 从一次深夜调试说起 上周三凌晨两点,我在实验室盯着屏幕上的评估报告发愣。模型在BLEU分数上比基线高了3个点,但实际跑出来的生成结果简直没法看——格式混乱、逻辑跳跃,甚至出现了明显的常识错误。那一刻我突然意识到:我们太…...

[实战指南] 彻底清理CUDA环境:解决bitsandbytes安装冲突的终极方案

1. 为什么你的bitsandbytes总是安装失败? 每次看到那个红色的RuntimeError: CUDA Setup failed报错,我都想砸键盘。这玩意儿就像个顽固的牛皮癣,明明GPU就在那里躺着,CUDA也装得好好的,可bitsandbytes就是死活认不出来…...

私车公用合规区分通勤与办公里程,核算可抵扣账务额度。

一、实际应用场景描述某科技公司实行私车公用报销制度:- 员工使用自有车辆处理公务- 公司按月报销 合理公务里程对应的用车成本- 财务需区分:- ✅ 通勤里程(不可报销)- ✅ 公务里程(可报销 可抵扣进项税)-…...

考研自习室席位费+茶水杂费复合收支智能盈亏测算。

考研自习室席位费 茶水杂费复合收支智能盈亏测算程序。一、实际应用场景描述(Scene)某高校周边考研自习室运营现状:- 收入来源:- 固定席位费(包月 / 包季)- 茶水、零食、打印等杂费- 支出构成:…...

别再死记命令了!用eNSP华为模拟器搞定网络配置的5个高效技巧

别再死记命令了!用eNSP华为模拟器搞定网络配置的5个高效技巧 第一次打开eNSP时,很多人会本能地打开记事本,准备记录那些冗长的命令行——就像背单词表一样。但三个月后,这些笔记往往变成了电脑里再也用不上的数字废纸。真正高效的…...

从ORA-01882看Java时区那些坑:JVM、Docker和Oracle的“三角恋”

从ORA-01882看Java时区那些坑:JVM、Docker和Oracle的“三角恋” 在分布式系统架构中,时区问题就像一颗定时炸弹,随时可能在最意想不到的时刻引爆。当Java应用通过JDBC连接Oracle数据库时,ORA-01882错误就像一个顽固的幽灵&#xf…...

Neo4j 5.x 安装后登录总失败?别慌,这可能是默认密码策略在‘捣鬼’

Neo4j 5.x 登录失败的终极排查指南:从密码策略到实战解决方案 最近在技术社区看到不少关于Neo4j 5.x登录问题的讨论——明明按照官方文档操作,却在登录环节反复碰壁。这让我想起去年带队迁移图数据库时,团队新人几乎每人都会在这个"坑&q…...

从零开始:基于hyper模板的独角发卡2.0.6二次开发完整教程(含源码解析)

从零开始:基于Hyper模板的独角发卡2.0.6二次开发完整教程(含源码解析) 在数字商品交易领域,发卡系统作为自动化交易的核心工具,其灵活性和可定制性直接影响业务运营效率。独角发卡系统凭借其开源特性和模块化设计&…...

Mac上告别命令行!用SmartSVN图形化搞定SVN版本控制(附目录结构最佳实践)

Mac上告别命令行!用SmartSVN图形化搞定SVN版本控制(附目录结构最佳实践) 作为一名长期与代码打交道的开发者,我深知版本控制工具的重要性。但每次打开终端输入那些晦涩的SVN命令时,总有种穿越回2005年的错觉。直到发现…...

抖音无水印下载神器:3分钟掌握批量下载技巧,轻松保存高清视频素材

抖音无水印下载神器:3分钟掌握批量下载技巧,轻松保存高清视频素材 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and …...

GPT-2 蒸馏、压缩、剪枝实战

1.项目背景 大语言模型虽然效果强,但部署成本高。对于类似 GPT-2 这样的自回归语言模型,常见的压缩思路主要有三类: - 蒸馏:让一个更小的 student 去模仿更大的 teacher - 剪枝:删除一部分不重要的权重,降…...

Python接口自动化浅析unittest单元测试原理

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 这篇文章主要介绍了Python接口自动化浅析unittest单元测试原理,文中描述了单元测试,unittest模块特性、大致流程、源码及实战例子这几个模块&#xff…...

如何快速上手UI-TARS:从零开始的视觉AI桌面助手完整指南

如何快速上手UI-TARS:从零开始的视觉AI桌面助手完整指南 【免费下载链接】UI-TARS-desktop The Open-Source Multimodal AI Agent Stack: Connecting Cutting-Edge AI Models and Agent Infra 项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS-desktop …...

JSTL 标签库详解与实战案例

目录 一、JSTL 基础认知 1. 什么是 JSTL? 2. JSTL 的 5 大标签库 二、JSTL 下载与使用 1. 依赖包下载 2. 基于Maven项目 3. 使用 三、JSTL 核心标签库实战 前置准备:JavaBean 实体类 1. MyUser.java(用户实体) 2. Prod…...

2026 学术降维打击:9 大 AI 查重降重工具,从重复率 99% 到安全过审全攻略

开篇:毕业季的双重围剿,普通改写已彻底失效 当知网、维普升级 “查重 AIGC 双检测” 引擎,82% 高校将 “AIGC 生成率≤20%” 纳入毕业硬指标,本科生正面临前所未有的学术围剿:用 AI 写初稿省出 3 天时间,…...

RequestAttributes , ServletRequestAttributes学习

public static ServletRequestAttributes getRequestAttributes(){RequestAttributes attributes RequestContextHolder.getRequestAttributes();return (ServletRequestAttributes) attributes;}是 获取当前 HTTP 请求上下文的标准两步操作 RequestAttributes attributes Re…...

大厂 Multi-Agent 落地经验:字节跳动智能创作平台的架构拆解

大厂 Multi-Agent 落地经验:字节跳动智能创作平台的架构拆解 第一部分:引言与基础 1.1 引人注目的标题 从零到一理解工业级 Multi-Agent 系统:字节跳动智能创作平台架构深度拆解 副标题: 揭秘大厂如何通过多智能体协作实现高效、高质量的 AIGC 内容生产 1.2 摘要/引言…...

K210小白避坑指南:从MaixHub下载YOLO模型到成功加载的完整流程(附固件选择表)

K210实战避坑手册:从MaixHub模型下载到YOLO部署全流程解析 第一次拿到K210开发板时,那种既兴奋又忐忑的心情记忆犹新——这款号称"边缘AI神器"的小板子,真的能跑得动YOLO这样的视觉算法吗?当我从MaixHub下载了现成的kmo…...