美文网首页
python 封装try/except事务回滚

python 封装try/except事务回滚

作者: wyc0859 | 来源:发表于2021-07-14 11:06 被阅读0次
try catch事务回滚,常见写法
def a():
        try:
            ......
            db.session.add(data)
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            raise e

如何封装try catch事务回滚

上下文管理器 结合 with

新建一个文件
@contextmanager 上下文管理器的装饰器

class SQLAlchemy(_SQLAlchemy): 

    @contextmanager
    def auto_commit(self):
        try:
            print("*****先进来了***")
            yield   # yield为中断,有yield说明这是一个生成器,到这里就跳出去
            #执行完装饰器装饰的内容后,又进入继续
            self.session.commit()
        except Exception as e:
            db.session.rollback()
            raise e

db = SQLAlchemy()

封装后的写法
with用法,先执行条件表达式

from app.base import db    # 引入上面文件

def b(x):
   with db.auto_commit():
            ......
            db.session.add(data)

相关文章

网友评论

      本文标题:python 封装try/except事务回滚

      本文链接:https://www.haomeiwen.com/subject/jufypltx.html