博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pymysql的连接池实现
阅读量:6419 次
发布时间:2019-06-23

本文共 707 字,大约阅读时间需要 2 分钟。

在使用pymysql作为MySQL驱动时,在多线程模型下,如果我们没有为每个线程创建一个单独的连接的话,就会遇到下列错误

pymysql.err.InternalError: Packet sequence number wrong - got 0 expected 1

这是因为pymysql的threadsafety级别为 1:

但是为每个线程创建单独的连接的话,如果任务量比较大同时使用线程池的场景下,会造成client和MySQL server之间的频繁“连接-登录-退出”,这显然是不优雅的。所以我们需要一个“连接池”,以达到client和MySQL之间只需维持较少的连接,即可完成任务的效果。

笔者实现了一个基于pymysql的连接池模块pymysql_pool,包含两个类

  • pymysql_pool.Connection类,继承自pymysql.connections.Connection类,在保证使用方法一致的前提下,增加了对连接池的维护

  • pymysql_pool.ConnectionPool类,代表连接池,其中包含指定数目的pymysql_pool.Connection对象。这里的pymysql_pool.Connection对象相比pymysql.connections.Connection对象,增加了一个属性来标明该连接所属的连接池,也正是通过该属性来区分一个普通连接和一个池中的连接,进而对连接对象的close()方法和Context Manager Protocol进行不同的处理

项目详情请移步

转载于:https://blog.51cto.com/kaifly/2358445

你可能感兴趣的文章
zookeeper入门之Curator的使用之几种监听器的使用
查看>>
[转]Reporting Service部署之访问权限
查看>>
innerxml and outerxml
查看>>
validform校验框架不显示错误提示
查看>>
flink 获取上传的Jar源码
查看>>
Spring Data JPA Batch Insertion
查看>>
UEditor自动调节宽度
查看>>
JAVA做验证码图片(转自CSDN)
查看>>
Delphi TServerSocket,TClientSocket实现传送文件代码
查看>>
JS无聊之作
查看>>
Mac上搭建ELK
查看>>
443 Chapter7.Planning for High Availability in the Enterprise
查看>>
框架和语言的作用
查看>>
unidac连接ORACLE免装客户端驱动
查看>>
Cygwin + OpenSSH FOR Windows的安装配置
查看>>
咏南中间件支持手机客户端
查看>>
fastscript增加三方控件之二
查看>>
Windows Vista RTM 你准备好了么?
查看>>
Tensorflow Serving 模型部署和服务
查看>>
Java Web开发详解——XML+DTD+XML Schema+XSLT+Servlet 3.0+JSP 2.2深入剖析与实例应用
查看>>