session.begin(subtransactions=True),可以解决子事务,但只能最多一个子事务
如:
with db.auto_commit_db(scoped_session=True) as s: s.add(user1) with db.auto_commit_db() as s2: s2.add(user2) raise MyError(code=122, msg='出错错了')
其中只有s2一个子事务,抛出异常时,s,s2都可以回滚,但如果这样:
with db.auto_commit_db(scoped_session=True) as s: s.add(user1) with db.auto_commit_db() as s2: s2.add(user2) with db.auto_commit_db() as s3: s3.add(user3) raise MyError(code=122, msg='出错错了')
有两个或两个以上时,子事务就无效了,有什么解决办法吗