Python SQLAlchemy,如何使用ORM和连接池会话?

Python SQLAlchemy,如何使用ORM和连接池会话?,python,session,orm,sqlalchemy,connection-pooling,Python,Session,Orm,Sqlalchemy,Connection Pooling,我正在开发一个金字塔应用程序,它使用SQLAlchemy的ORM库,因此我们使用会话。我不清楚会话和连接池是如何协同工作的,或者在使用会话时是否需要连接池 目前,以下是我们创建会话的方式: engine = create_engine(connection_string) Session = sessionmaker(bind=engine) 我修改了创建引擎以添加连接池: pooled_engine = create_engine(connection_string, pool_size=2

我正在开发一个金字塔应用程序,它使用SQLAlchemy的ORM库,因此我们使用会话。我不清楚会话和连接池是如何协同工作的,或者在使用会话时是否需要连接池

目前,以下是我们创建会话的方式:

engine = create_engine(connection_string)
Session = sessionmaker(bind=engine)
我修改了创建引擎以添加连接池:

pooled_engine = create_engine(connection_string, pool_size=20, max_overflow=5,echo=True, echo_pool=True)
Session = sessionmaker(bind=pooled_engine)
这似乎是可行的(应用程序连接到数据库,可以读/写到数据库),但我无法判断是否正在使用连接池。我尝试记录连接池代码,但在控制台上看不到任何内容。但是,我确实看到了SQL语句,这是由于echo标志被设置为True

我不明白会话和连接池是如何协同工作的,也不明白当echo_pool设置为True时为什么看不到日志语句

任何帮助都将不胜感激


谢谢

引擎处理连接池,默认情况下已启用

从:

在大多数情况下,create_Engine()函数返回的引擎 一个与合理池集成、预配置的队列池 默认值。如果您阅读本节只是为了了解如何启用 池-祝贺你!你已经做完了


我认为会话对象与数据库会话不对应。相反,它们是ORM会话。它们实际上甚至没有到数据库的连接,除非它们正在查询或保存到数据库。请注意,我对此不是100%确定,因此如果有更了解SQLAlchemy内部结构的人能够确认或编辑此内容,我们将不胜感激。

更准确地说,
会话
如果在该会话上没有活动的事务,就不会连接到他们所拥有的数据库。