python中的mysql连接池

code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pymysql
from DBUtils.PooledDB import PooledDB

MYSQL_HOST = '127.0.0.1'
USER = 'zabbix'
PASSWORD = 'p@55w0rd'
DB = 'zabbix'
PORT = 3306

# 创建数据库连接池
mp = PooledDB(
pymysql, mincached=5, maxconnections=10, blocking=True,
host=MYSQL_HOST, user=USER, passwd=PASSWORD, db=DB, port=PORT, charset="utf8"
)

conn = mp.connection()
cur = conn.cursor()

sql = "select hostid from hosts where name='xxx';"
mysql.cur.execute(sql)

cur.close()
conn.close()

PooledDB的参数

  • mincached: 最少的空闲连接数, 如果空闲连接数小于这个数, pool会创建一个新的连接
  • maxcached: 最大的空闲连接数, 如果空闲连接数大于这个数, pool会关闭空闲连接
  • maxconnections: 最大的连接数
  • blocking: 当连接数达到最大的连接数时, 在请求连接的时候, 如果这个值是True, 请求连接的程序会一直等待, 直到当前连接数小于最大连接数, 如果这个值是False, 会报错