SQLAlchemy报错 Can‘t reconnect until invalid transaction is rolled backs

2023-03-26 21:49:20

SQLAlchemy报错 Can’t reconnect until invalid transaction is rolled backs

进行sqlalchemy查询,系统报错:存在未回滚的事务

解决方法

http://einverne.github.io/post/2017/05/sqlalchemy-session.html
正确用法是确保 session 在使用完成后用 session.close, session.commit 或者 session.rollback 把连接还回 pool。

我的处理方法
1.先对未回滚的事务进行回滚:

db = current_app.DBSession()#当前的数据库session
db.rollback()

2.增加后续的异常检查加上回滚:
https://docs.sqlalchemy.org/en/13/orm/session_basics.html

class ThingOne(object):
    def go(self, session):
        session.query(FooBar).update({"x": 5})

class ThingTwo(object):
    def go(self, session):
        session.query(Widget).update({"q": 18})

def run_my_program():
    session = Session()
    try:
        ThingOne().go(session)
        ThingTwo().go(session)

        session.commit()
    except:
        session.rollback()
        raise
    finally:
        session.close()	
  • 作者:GreenPill
  • 原文链接:https://blog.csdn.net/u013992365/article/details/111275324
    更新时间:2023-03-26 21:49:20