同步上下文管理器规则

enter:进入 with 代码块时自动执行(可开启事务);

exit:退出 with 代码块时自动执行,该方法会接收异常类型、异常对象、堆栈信息参数,可判断是否发生异常:无异常则提交事务,出现异常则回滚事务。

python 复制代码
class DBTransaction:
    def __enter__(self):
        # 开启事务
        print("开启数据库事务")
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        # exc_type不为None代表出现异常
        if exc_type is None:
            print("无异常,提交事务")
        else:
            print("出现异常,回滚事务")
        # 返回False会向外抛出异常,True则屏蔽异常
        return False

# 使用with管理事务
with DBTransaction():
    print("执行数据库操作...")
    # 若此处抛出异常,__exit__会捕获并回滚
相关推荐
一木 之林几秒前
三.C++ 内存管理(进阶)(二)
开发语言·arm开发·c++
吴声子夜歌2 分钟前
Java——类、对象及方法(一)
java·开发语言
程序员夏洛10 分钟前
Redis 的持久化机制有哪些?
java·数据库·redis
阿里嘎多学长11 分钟前
2026-08-29 GitHub 热点项目精选
开发语言·程序员·github·代码托管
l1t11 分钟前
DeepSeek总结的修复pgrust v0.2 #83:generate_series 聚合及其底层的两个成本 - #84
数据库·postgresql
এ慕ོ冬℘゜31 分钟前
JavaScript学习心得:从只会语法,到真正会写业务逻辑
开发语言·javascript·ecmascript
2601_9669496536 分钟前
五档盘口数据对量化交易有什么价值?从信号判断到策略风险的完整分析
开发语言·人工智能·python·数据分析·量化·股票数据·quantdash
厦门德仔1 小时前
【YiFeiWebApi】易飞ERP与WMS系统接口对接实战:从0到1全流程指南
大数据·数据库
小吴学不废Java1 小时前
Python 基础语法
开发语言·python
内存漫游1 小时前
Page 到底是什么:数据库如何把一条条记录放进磁盘
数据库