栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在MySQL中关闭sqlalchemy连接

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在MySQL中关闭sqlalchemy连接

这是正确编写该代码的方法:

db = create_engine('mysql://root@localhost/test_database')for i in range(1,2000):    conn = db.connect()    #some simple data operations    conn.close()db.dispose()

也就是说,

Engine
是连接 工厂 和连接 ,而不是连接本身。当您说时
conn.close()
,连接将 返回到Engine内的连接池
,而实际上并未关闭。

如果确实要关闭连接,即不进行池化,请通过

NullPool
以下方式禁用池化:

from sqlalchemy.pool import NullPooldb = create_engine('mysql://root@localhost/test_database', poolclass=NullPool)

使用上述

Engine
配置,每次调用
conn.close()
都会关闭基础DBAPI连接。

如果OTOH您实际上希望在每次调用时连接到 不同的
数据库,也就是说,您的硬编码

"localhost/test_database"
只是一个示例,并且您实际上有很多不同的数据库,则使用的方法
dispose()
很好;它将关闭所有未从池中检出的连接。

在上述所有情况下,重要的是该

Connection
对象是通过关闭的
close()
。如果您使用的是任何类型的“无连接”执行,即
engine.execute()
statement.execute()
,则
ResultProxy
应该完全读取从该execute调用返回的对象,或者通过显式关闭该对象
close()
。一个
Connection
ResultProxy
这仍然开放将禁止
NullPool
dispose()
从关闭每一个最后的连接方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411710.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号