Python SqlAlchemy在engine.dispose()之后重新创建池

Python SqlAlchemy在engine.dispose()之后重新创建池,python,pandas,sqlalchemy,Python,Pandas,Sqlalchemy,我正在将sqlalchemy与pandas.to_sql()一起使用,以将一些数据复制到sql server中。复制完成并调用engine.dispose()后,我在日志中看到以下信息消息: [INFO] sqlalchemy.pool.impl.QueuePool: Pool recreating 我想知道这条消息是否意味着即使我处理了发动机,连接仍然保持带电。如果是这样的话,什么是安全和正确的方法呢?连接没有激活。但是您可以在池对象的帮助下重新启动连接 以下章节对此进行了详细描述: 引擎具

我正在将sqlalchemy与
pandas.to_sql()
一起使用,以将一些数据复制到sql server中。复制完成并调用
engine.dispose()
后,我在日志中看到以下信息消息:

[INFO] sqlalchemy.pool.impl.QueuePool: Pool recreating

我想知道这条消息是否意味着即使我处理了发动机,连接仍然保持带电。如果是这样的话,什么是安全和正确的方法呢?

连接没有激活。但是您可以在
对象的帮助下重新启动连接

以下章节对此进行了详细描述:

引擎具有可检测断开事件并自动刷新池的逻辑

当连接尝试使用DBAPI连接,并引发与“断开连接”事件对应的异常时,连接将无效。然后,连接调用Pool.recreate()方法,有效地使当前未签出的所有连接无效,以便在下次签出时用新连接替换它们


还可以查看链接中的代码示例。它真的很整洁。

连接没有激活。但是您可以在
对象的帮助下重新启动连接

以下章节对此进行了详细描述:

引擎具有可检测断开事件并自动刷新池的逻辑

当连接尝试使用DBAPI连接,并引发与“断开连接”事件对应的异常时,连接将无效。然后,连接调用Pool.recreate()方法,有效地使当前未签出的所有连接无效,以便在下次签出时用新连接替换它们


还可以查看链接中的代码示例。它真的很整洁。

如果有一个连接已经从池中签出,那么这些连接仍然是活动的,因为它们被某些东西引用

有关详细信息,请参阅以下链接。


如果您正在使用QueuePool(默认情况下,如果您在创建引擎对象时未指定任何poolClass),并且不希望任何连接保持活动状态,则可以关闭连接[conn.close()或session.close()],从而将连接返回到池(称为签入连接)。稍后,当您在复制作业完成后调用engine.dispose()时,这将真正负责关闭连接,并且不会使任何签入连接保持活动状态

如果存在已从池中签出的连接,则这些连接在被某个对象引用时仍将保持活动状态

有关详细信息,请参阅以下链接。

如果您正在使用QueuePool(默认情况下,如果您在创建引擎对象时未指定任何poolClass),并且不希望任何连接保持活动状态,则可以关闭连接[conn.close()或session.close()],从而将连接返回到池(称为签入连接)。稍后,当您在复制作业完成后调用engine.dispose()时,这将真正负责关闭连接,而不会使任何签入连接保持活动状态