同步上下文管理器规则

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__会捕获并回滚
相关推荐
aramae3 小时前
模拟实现strcmp()(C语言)
c语言·开发语言·后端
+VX:Fegn08954 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·课程设计
泡海椒4 小时前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色
java·开发语言·pdf
Beyond_System|系统之外5 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
景熙55236 小时前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
哈__6 小时前
KES-Operator重塑Kubernetes环境下的KES数据库集群管理
数据库·kubernetes·operator·kes
IvorySQL7 小时前
IvorySQL 5.6 发布:PG 18.6 内核升级,沙盒即开即用
数据库·人工智能·postgresql
CNSSIRD数据库8 小时前
中国企业环境信用数据库2003-2026
大数据·数据库·数据分析·论文笔记
Bruce_Liuxiaowei8 小时前
Python 实例赋值遮蔽类属性:一个从不报错的静默陷阱
开发语言·python·语法糖