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 )

你可能感兴趣的:(Python 数据库连接池的正确打开方式)