Python 数据库连接池的正确打开方式

在单独模块中定义数据库连接池对象:

# dbconnection.py
from DBUtils.PooledDB import PooledDB

dbpools = PooledDB(creator=sql_driver, mincached=mincache, maxcached=maxcache, maxconnections=maxconnections, host=host, port=port, user=user, password=password )

在主程序中导入该模块:

# main.py
import dbconnection

问题来了:
当我们在程序里导入另一个模块或者导入另一个模块的函数或者类的时候,一旦导入,该模块里的代码就会被执行。这意味着,当我们启动程序的时候,数据库连接池dbpools对象会先被创建,创建时会去连接数据库,而这是一个很耗时的操作,会导致程序启动的延迟,若连接数据库失败,程序将无法启动,这在一些场景下不符合运行逻辑。
解决方法:
将连接池对象的初始化操作封装成函数,在需要的时候调用该函数,如下所示:

# dbconnection.py
from DBUtils.PooledDB import PooledDB

dbpools = None
def init_dbpools():
    global dbpools
    dbpools = PooledDB(creator=sql_driver, mincached=mincache, maxcached=maxcache, maxconnections=maxconnections, host=host, port=port, user=user, password=password )
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 10,995评论 0 9
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,902评论 1 32
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 12,409评论 0 27
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 13,162评论 0 3
  • 目标 儿子积极上进,身心健康,努力学习,考上理想的高中。 尽自己的能力去帮助他人解决困难,让对方心情轻松愉悦。 自...
    7f207b2df6aa阅读 1,531评论 1 2

友情链接更多精彩内容