SQLAlchemy在事务中空闲

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLAlchemy在事务中空闲相关的知识,希望对你有一定的参考价值。

我有应用程序写的Python 3.6,Flask和SQLAlchemy(PostgreSQL)。

我在我的数据库中挂起idle in transaction连接时遇到了问题。这可能是因为我在选择查询后不提交或回滚。

我使用默认的SQLALchemy配置:db = SQLAlchemy()

创建挂起连接的示例端点:

class Test(Resource):

    def get(self, pk):
        return User.query.get(pk).serialize()

处理此类选择查询的方式是什么?我应该选择然后提交吗?或选择然后回滚?请求后完全关闭连接?但是关闭连接会导致每次请求都会打开新的数据库连接。

什么是最好的方式?

答案

本文描述了正在发生的事情以及如何处理它:http://oddbird.net/2014/06/14/sqlalchemy-postgres-autocommit/

简短回答:SQLAlchemy默认隐式打开新事务。您可以在每个SELECT之后提交或打开自动提交(阅读文章以了解更多信息)。

这是关于此事的SO帖子。 sqlalchemy, postgresql and relationship stuck in "idle in transaction"

以上是关于SQLAlchemy在事务中空闲的主要内容,如果未能解决你的问题,请参考以下文章

在 Microsoft SQL Server 和 Python 的 SQLAlchemy 和 pyodbc 的上下文中,啥是“用户事务”?

我可以在没有事务的情况下通过 sqlalchemy 执行查询吗

Flask 和 SQLAlchemy 在 PostgreSQL 的事务连接中导致大量 IDLE

SQLAlchemy多线程下事务隔离机制详解

SQLAlchemy多线程下事务隔离机制详解

片段事务中的实例化错误