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的参数,例如主机名、数据库、用户名、密码等。