【问题标题】:Dealing with SQL Alchemy sessions.处理 SQL Alchemy 会话。
【发布时间】:2014-03-31 00:48:41
【问题描述】:

目前,我的项目结构是这样的:

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"

我还没有完成这个查询。我已经更改了我的数据库,但错误仍然存​​在。所以,我认为会话仍然存在。我试过刷新会话/回滚,但没有任何帮助。

我的另一个问题是我从不关闭会话。我该如何实现呢? (这是一个网络应用程序)

【问题讨论】:

    标签: python postgresql session sqlalchemy cherrypy


    【解决方案1】:

    为了安全起见,在每次使用数据库之前创建一个新会话,同时将代码放入 try 并在 finally 中使用 session.rollback() 和 session.flush() 捕获异常。

    现在要解决你的问题,重启mysql服务器

    【讨论】:

    • 重启我的 postgres 服务器没有帮助。
    猜你喜欢
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2011-10-07
    • 2017-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多