当前位置: 首页 > 后端技术 > Python

PYTHON数据库之一(PooledDB连接池)

时间:2023-03-26 00:38:32 Python

版本环境python3.7DBUtils1.3mysqlclient1.4.6连接池初始化pool=PooledDB(creator=MySQLdb,mincached=0,maxcached=0,maxshared=0,maxconnections=0,blocking=False,maxusage=None,setsession=None,reset=True,failures=None,ping=1,*args,**kwargs)参数说明creator#creator=>任何符合DB-API的函数或兼容数据库2.0规范模块mincached#mincached=>初始化时,至少在连接池中创建空闲连接,0表示不创建maxcached#maxcached=>连接池中最大空闲连接数(0和None不限)maxshared#maxshared=>最大共享连接数(0或None表示所有连接都是专用的)当达到此最大数量时,如果连接被请求为shareablemaxconnections#maxconnections=>允许的最大连接数(0或None)意味着你nlimited)blocking#blocking=>连接池中没有可用链接时是否阻塞等待。True表示阻塞等待,直到获得链接;false不等待,抛出异常退出maxusage#maxusage=>同一个链接可以重复使用的最大次数(0和None表示无限制)setsession#setsession=>optionalsessioncommand:启动前要执行的命令列表会议。例如["setdatestyleto...","settimezone..."]reset#reset=>当连接放回池中时如何重置连接,默认为True。False或None表示使用begin()打开事务的链接,将进行回滚;为了安全,推荐使用True,当为True时,表示所有链接都会执行回滚操作failures#failures=>当默认的(OperationalError,InternalError)异常不满足要求时,可以自定义抛出的异常:默认为无;将其自定义为传入元组或issubclass(failures,Exception)ping#ping=>检查连接是否仍处于活动状态0=无=从不,1=默认=每当从池中获取时,2=创建游标时,4=执行查询时,7=always,以及这些值的所有其他位组合sargs,kwargs#args,kwargs=>passUse#-*-coding:utf-8-*-#forcreatorparameters#@Time:2020/1/26002620:28#@Email:lofish@foxmail.com(罗小鱼)importMySQLdbimportMySQLdb.cursorsfromDBUtils.PooledDBimportPooledDBimportdatetimeclassDbManager(object):def__init__(self,host,port,db_name,user_name,password):cmds=["setnamesutf8mb4;"]conn_args={'host':host,'port':port,'db':db_name,'user':user_name,'passwd':password,'charset':'utf8','cursorclass':MySQLdb.cursors.DictCursor}#初始化时,至少在链接池中创建空闲链接,0表示没有created,mincached:5#连接池最大空闲连接数(0和None不限):20self._pool=PooledDB(MySQLdb,mincached=5,maxcached=20,setsession=cmds,**conn_args)defconnection(self):returnself._pool.connection()_db_manager=Nonedefcreate_db_manager(host,port,dbname,username,password):global_db_manager如果_db_manager为None:_db_manager=DbManager(host,port,dbname,username,password)返回_db_manager

猜你喜欢