我对 python 和 Pyramid 框架还很陌生。最近有人介绍我使用 SQLSoup 来满足我的数据库 (postgres) 需求。
dbEngine1 = SqlSoup(settings['sqlalchemy.db1.url'])
users = dbEngine1.users.fetchall()
一切正常,但在使用 Pyramid 应用程序一小段时间后,我收到此错误消息。我必须杀死 Pyramid 以释放 postgres 中的所有空闲连接(在抛出异常之前大约有 50 个空闲连接)
sorry, too many clients already
我的问题是,如何关闭这个空闲连接,我尝试添加一行代码如下所示,但它没有帮助。
dbEngine1 = SqlSoup(settings['sqlalchemy.db1.url'])
users = dbEngine1.users.fetchall()
dbEngine1.engine.connect().close()
SQLAlchemy 专家有任何指示吗?
请您参考如下方法:
似乎您在对您的 Pyramid 应用的每个请求上都创建了 dbEngine1。
要在 webapp 中正确使用 SqlSoup,您必须使用 SA session 。
参见 this page 上的“访问 session ”部分.
how do I close this idling connection
SqlSoup如raw SA使用连接池,池中的每个连接在idle status util查询时执行。此连接池必须创建一次。
