源代码
# coding:utf-8
# 基于pymysql
import pymysql
from DBUtils.PooledDB import PooledDB, SharedDBConnection
from app.conf import CONF
import threading
DHOST = CONF.mysql_host
DPORT = CONF.mysql_port
mysql_db = CONF.mysql_db
DUSER = CONF.mysql_name
DPWD = CONF.mysql_password
DATABASE = CONF.mysql_db
CHARSET = 'utf8'
class DB:
# 构造函数
def __init__(self):
try:
self.pool = PooledDB(
creator=pymysql, # 使用连接数据库的模块
maxconnections=10, # 连接池允许的最大连接数,0 和 None表示不限制连接数
mincached=3, # 初始化时,链接池中至少创建的空闲的链接,0表示不创建
maxcached=3, # 链接池中最多闲置的链接,0和None表示不限制
maxshared=0, # 链接池中最多共享的链接数量,0和None表示全部共享, 注:因为pymysql 和 mysqldb等模块的threadsafety都为1,所以值无论设置为多少,_maxcached永远为0,所有永远是所有链接都共享
blocking=True, # 链接池中如果没有可用连接后,是否阻塞等待,True:等待 False:不等待然后报错