引言
pymysqlpool 是数据库对象包中新成员,目标是能供给一个实用的数据库连接池中心件,大年夜而避免在应用中频繁地创建和释放数据库连接资本。
功能
- 连接池本身是线程安然的,可在多线程情况下应用,不必担心连接资本被多个线程共享的问题;
- 供给尽可能紧凑的接口用于数据库操作;
- 连接池的治理位于包内完成,客户端可以经由过程接口获取池中的连接资本(返回 pymysql.Connection );
- 将最大年夜程度地与 dataobj 等兼容,便于应用;
- 连接池本身具备动态增长连接数的功能,即 max_pool_size 和 step_size 会用于控制每次增长的连接数和最大年夜连接数;
- 连接池最大年夜连接数亦动态增长,须要开启 enable_auto_resize 开关,此后当任何一次连接获取超时产生,均记为一次处罚,并且将 max_pool_size 扩大年夜必定倍数。
依附
根本工作流程
留意,当多线程同时请求时,若池中没有可用的连接对象,则须要列队等待
- 初始化后优先创建 step_size 个连接对象,放在连接池中;
- 客户端请求连接对象,连接池会大年夜中遴选比来没应用的连接对象返回(同时会检查连接是否正常);
- 客户端应用连接对象,履行响应操作后,调用接口返回连接对象;
- 连接池收受接收连接对象,并将其参加池中的队列,供其它请求应用。
- |--------| |--------------|
- | | <==borrow connection object== | Pool manager |
- | Client | | |
- | | ==return connection object==> | FIFO queue |
- |--------| |--------------|
数设备
- pool_name: 连接池的名称,多种连接参数对应多个不合的连接池对象,多单例模式;
- host: 数据库地址
- user: 数据库办事器用户名
- password: 用户暗码
- database: 默认选择的数据库
- port: 数据库办事器的端口
- charset: 字符集,默认为 ‘utf8’
- use_dict_cursor: 应用字典格局或者元组返回数据;
- max_pool_size: 连接池优先最大年夜连接数;
- step_size: 连接池动态增长连接数大年夜小;
- enable_auto_resize: 是否动态扩大连接池,即当跨越 max_pool_size 时,主动扩大 max_pool_size ;
- pool_resize_boundary: 该设备为连接池最终可以增长的上上限大年夜小,即时扩大也弗成跨越该值;
- auto_resize_scale: 主动扩大 max_pool_size 的增益,默认为 1.5 倍扩大;
- wait_timeout: 在列队等待连接对象时,最多等待多久,当超不时连接池测验测验主动扩大当前连接数;
- kwargs: 其他设备参数将会在创建连接对象时传递给 pymysql.Connection
应用示例
1.应用 cursor 高低文治理器(快捷方法,但每次获取都邑申请连接对象,多次调用效力不高):
- from pymysqlpool import ConnectionPool
- config = {
- 'pool_name': 'test',
- 'host': 'localhost',
- 'port': 3306,
- 'user': 'root',
推荐阅读
此外,私有云市场对技巧请求低于公有云市场,同时又有各类开源技巧,也导致了该范畴内的竞争厂商数量明显多于公有云。在以前的180天里,在云计算范畴共有18家创虻公司获得融资,金额总数跨>>>详细阅读
本文标题:Python MySQL数据库连接池组件
地址:http://www.17bianji.com/lsqh/35872.html
1/2 1