目前,我的项目结构如下:
project-name/libs/__init__.py
/module-1
/module-2
我已在 init .py
中声明了我的sqlalchemy会话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)
然后我在需要进行查询的任何地方使用此会话。
目前,我正面临这个问题:
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"
我还没有完成此查询。我已经更改了数据库,但错误仍然存在。所以,我认为会议仍然存在。我试过刷新会话/回滚,但没有任何帮助。
我的另一个问题是我永远不会关闭会话。我该如何实现这一目标? (这是一个网络应用程序)
答案 0 :(得分:-1)
为了安全起见,在每次使用数据库之前创建一个新会话,同时将你的代码放入try中,并在finally中使用session.rollback()和session.flush()来捕获异常。
要立即修复您的问题,请重新启动mysql服务器