python - 处理 SQL Alchemy session 。

标签 python postgresql session sqlalchemy cherrypy

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

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/

相关文章:

python - 替换嵌套列表中某些列表中的值

python - 无法导入 Django。您确定它已安装并在您的 PYTHONPATH 上可用吗

postgresql - 如何在 VS2010 Pro 的实体数据模型向导中将数据源更改为 PostgreSQL

postgresql:将多个图像插入 bytea 列?

Python 查找一些而不是全部自定义包

python - 我怎样才能从 Twitter 用户那里获得大量关注者,然后关注他们?

php - $_SESSION ['userid' ] 在一个函数中起作用,而不是在下一个函数中起作用

asp.net - Session改变或无效时,HttpCookie不会被删除

python - 如何将 lambda 函数分解成它自己的函数? (Lambda 目前是 125+ 个字符)

c# - 每个浏览器选项卡的不同 ASP.NET session