python mysql ,sqlserver 连接池 and 引入DBUtils异常

本文介绍了在Python中使用DBUtils模块创建数据库连接池以优化资源管理的方法,特别是针对pymysql和pymssql库。当遇到DBUtils导入异常时,建议降级到1.3版本。示例代码展示了如何初始化数据库连接池,并提供了查询和非查询操作的接口。参数如mincached、maxcached等用于控制连接池的行为。
摘要由CSDN通过智能技术生成
from DBUtils.PooledDB import PooledDB  爆红出错

引入DBUtils 出现异常的时候通过降低版本可解决,,

执行命令  pip install  DBUtils==1.3

连接数据库代码案例如下:

import pymysql,pymssql
from DBUtils.PooledDB import PooledDB
class Database:
    def __init__(self,*db):
        if len(db)==5:
            #mysql数据库
            self.host=db[0]
            self.port=db[1]
            self.user=db[2]
            self.pwd=db[3]
            self.db=db[4]
        else:
            #sqlserver数据库
            self.host=db[0]
            self.port=None
            self.user=db[1]
            self.pwd=db[2]
            self.db=db[3]
        self._CreatePool()
    def _CreatePool(self):
        if not self.db:
            raise NameError+"没有设置数据库信息"
        if (self.port==None):
            self.Pool=PooledDB(creator=pymssql,mincached=2, maxcached=5,maxshared=3, maxconnections=6, blocking=True,host=self.host,user=self.user, \
                               password=self.pwd,database=self.db,charset="utf8")
        else:
            self.Pool=PooledDB(creator=pymysql,mincached=2, maxcached=5,maxshared=3, maxconnections=6, blocking=True,host=self.host,port=self.port, \
                               user=self.user,password=self.pwd,database =self.db,charset="utf8")
    def _Getconnect(self):
        self.conn=self.Pool.connection()
        cur=self.conn.cursor()
        if not cur:
            raise "数据库连接不上"
        else:
            return cur
    #查询sql
    def ExecQuery(self,sql):
        cur=self._Getconnect()
        cur.execute(sql)
        relist=cur.fetchall()
        cur.close()
        self.conn.close()
        return relist
    #非查询的sql
    def ExecNoQuery(self,sql):
        cur=self._Getconnect()
        cur.execute(sql)
        self.conn.commit()
        cur.close()
        self.conn.close()

PooledDB的参数:

  • dbapi: 需要使用的DB-API 2模块
  • mincached : 启动时开启的空连接数量(缺省值 0 意味着开始时不创建连接)
  • maxcached: 连接池使用的最多连接数量(缺省值 0 代表不限制连接池大小)
  • maxshared: 最大允许的共享连接数量(缺省值 0 代表所有连接都是专用的)如果达到了最大数量,被请求为共享的连接将会被共享使用。
  • maxconnections: 最大允许连接数量(缺省值 0 代表不限制)
  • blocking: 设置在达到最大数量时的行为(缺省值 0 或 False 代表返回一个错误;其他代表阻塞直到连接数减少)
  • maxusage: 单个连接的最大允许复用次数(缺省值 0 或 False 代表不限制的复用)。当达到最大数值时,连接会自动重新连接(关闭和重新打开)
  • setsession: 一个可选的SQL命令列表用于准备每个会话,如 ["set datestyle to german", ...]
  • 其他,你可以设置用于传递到真正的DB-API 2的参数,例如主机名、数据库、用户名、密码等。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值