从本期开始知识点讲以思维导图的形式给出,内容点会按照讲解-应用-展示的形式体现,这样会更清晰些。
DBUntils连接池
在项目中链接数据是直接通过pymysql去做的链接请求关闭,每次操作都要独立重复请求,其实是比较浪费资源,在并发不大的小项目虽然无感知,但如果有频繁请求的项目中,就会有性能问题,那么可以通过使用连接池技术,管理来进行优化,DBUnitls是一套Python的数据库连接池包,对链接对象进行自动链接和释放,提高高频高并发下数据访问性能,大概的原理如:
DBUntils 按照配置初始化多个数据库连接存储在连接池中
在程序创建连接的时候,从空闲的连接池中获取,不需要重新初始化连接,提升链接速度;
在程序使用完毕后,把连接放回连接池,并不真正的关闭,等待其他请求使用,减少频繁数据的打开和关闭操作。
DBUntils 提供两种方式,并都能自动管理
PersistentDB (persistent_db) 提供线程专用的连接
PooledDB (pooled_db) 提供线程间可共享的连接
官方 [注解-1] 给出的示意图如下,仅够参考下,不进行扩展
使用此功能需要安装依赖
pip install DBUtils
一般比较常用就是共享的方式,以 pooled_db为例子,使用方法很简单
import pymysql from dbutils.pooled_db import PooledDB # 初始化数据库连接,使用pymysql连接, pool = PooledDB(pymysql,3,host='',port='',user='',passwd='',database='') # 一般连接 db = pool.connection() cur = db.cursor() cur.execute(...) res = cur.fetchone() cur.close() # 关闭使用游标 db.close() # 关闭使用连接 # 或者通过with方式 with pool.connection() as db: with db.cursor as cur: cur.execute(...) res = cur.fetchone()
09-13 10:29