数据库连接池
为啥要使用数据库连接池
频繁的连接和断开数据库,消耗大,效率低
DBUtils可以创建多个线程连接数据库,且一直保持连接,不会断开
执行数据库操作时,由数据池分配线程,当数据池空时,可选择等待或者抛错
安装
pip3 install DBUtils
基础用法
创建数据池
import time
import threading
import pymysql
from DBUtils.PooledDB import PooledDB
# 创建数据库连接池
POOL = PooledDB(
creator=pymysql,
maxconnections=20, # 定义最大连接数
mincached=2, # 定义起始连接数
host='127.0.0.1',
blocking=True, # 连接池用完时,True是等待,False时抛错
port=3306,
user='root',
password='123',
database='pooldb',
charset='utf8'
)
# 去数据库连接池获取一个连接
conn = POOL.connection()
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
cursor.execute('select * from tb1')
result = cursor.fetchall()
# 将此连接放还给连接池
conn.close()
在flask中应用
定义
import pymysql
from DBUtils.PooledDB import PooledDB
class SQLHelper(object):
def __init__(self):
# 创建数据库连接池
self.pool = PooledDB(
creator=pymysql,
maxconnections=5,
mincached=2,</