Postgresql 炼金术的密切联系

Postgresql 炼金术的密切联系,postgresql,flask,sqlalchemy,flask-sqlalchemy,Postgresql,Flask,Sqlalchemy,Flask Sqlalchemy,我正在为Flask使用PostgreSQL和Flas SQLAlchemy扩展 #app.py #views.py 请注意,我没有按照文档中的建议关闭连接: 您必须提交会话,但不必在请求结束时删除它,SQLAlchemy会为您这样做 但是,当我运行以下PostgreSQL查询时,我可以看到一些IDLE连接: SELECT * FROM pg_stat_activity; 这是否意味着我对炼金术有问题而不是关闭连接?我很担心这一点,因为最近我发现剩余的连接插槽是为非复制超级用户连接保留的错误。S

我正在为Flask使用PostgreSQL和Flas SQLAlchemy扩展

#app.py

#views.py

请注意,我没有按照文档中的建议关闭连接:

您必须提交会话,但不必在请求结束时删除它,SQLAlchemy会为您这样做

但是,当我运行以下PostgreSQL查询时,我可以看到一些
IDLE
连接:

SELECT * FROM pg_stat_activity;

这是否意味着我对炼金术有问题而不是关闭连接?我很担心这一点,因为最近我发现
剩余的连接插槽是为非复制超级用户连接保留的
错误。

SQLAlchemy设置了一个连接池,出于性能原因,该连接池将保持打开状态。PostgreSQL有一个配置选项。如果超过该值,则需要降低池计数或提高最大连接计数。假设默认最大值为100,并且您已将池设置为20,那么更有可能的是,还有其他应用程序与同一数据库有打开的连接
max_connections
是一个全局设置,因此它必须考虑连接到数据库服务器的所有应用程序。

不能说Flask,但连接池的要点是保持一些连接处于打开状态,以避免为每个事务打开新连接的开销。
user = User(***)
db.session.add(user)
db.session.commit()
SELECT * FROM pg_stat_activity;