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()