目前,我的项目结构是这样的:
project-name/libs/__init__.py
/module-1
/module-2
我已经在 init.py 中声明了我的 sqlalchemy session
engine = create_engine('postgresql+psycopg2://' + configurations.DB_USERNAME + ':' + configurations.DB_PASSWORD + '@' + configurations.DB_HOST +'/' + configurations.DB_NAME,echo=True)
sm = orm.sessionmaker(bind=engine, autoflush=True, autocommit=False,
expire_on_commit=True)
session = orm.scoped_session(sm)
然后我在任何需要查询的地方使用这个 session 。
目前,我面临这个问题:
This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (DataError) invalid input value for enum exchange: "BS1"
我还没有完成这个查询。我已经更改了我的数据库,但错误仍然存在。所以,我认为 session 仍然存在。我试过刷新 session /回滚,但没有任何帮助。
我的另一个问题是我永远不会关闭 session 。我该如何实现这一目标? (这是一个网络应用程序)
最佳答案
为了安全起见,在每次使用数据库之前创建一个新 session ,同时将您的代码放入 try 并在最后使用 session.rollback() 和 session.flush() 捕获异常。
现在要解决你的问题,重启mysql服务器
关于python - 处理 SQL Alchemy session 。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071081/