我的编程空间,编程开发者的网络收藏夹
学习永远不晚

开发自定义Mysql连接池

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

开发自定义Mysql连接池

使用第三方包

    https://pypi.python.org/pypi/DBUtils

     tar -zxvf *.tar.gz * python3 setup.py build && python3 setup.py install

import time
import pymysql
import threading
from DBUtils.PooledDB import PooledDB, SharedDBConnection
POOL = PooledDB(
    creator=pymysql,  # 使用链接数据库的模块
    maxconnections=6,  # 连接池允许的最大连接数,0和None表示不限制连接数
    mincached=2,  # 初始化时,链接池中至少创建的空闲的链接,0表示不创建
    maxcached=5,  # 链接池中最多闲置的链接,0和None不限制
    maxshared=3,  # 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。
    blocking=True,  # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
    maxusage=None,  # 一个链接最多被重复使用的次数,None表示无限制
    setsession=[],  # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."]
    ping=0,
    # ping MySQL服务端,检查是否服务可用。# 如:0 = None = never, 1 = default = whenever it is requested, 2 = when a cursor is created, 4 = when a query is executed, 7 = always
    host='127.0.0.1',
    port=3306,
    user='root',
    password='123',
    database='pooldb',
    charset='utf8'
)


def func():
    # 检测当前正在运行连接数的是否小于最大链接数,如果不小于则:等待或报raise TooManyConnections异常
    # 否则
    # 则优先去初始化时创建的链接中获取链接 SteadyDBConnection。
    # 然后将SteadyDBConnection对象封装到PooledDedicatedDBConnection中并返回。
    # 如果最开始创建的链接没有链接,则去创建一个SteadyDBConnection对象,再封装到PooledDedicatedDBConnection中并返回。
    # 一旦关闭链接后,连接就返回到连接池让后续线程继续使用。
    conn = POOL.connection()

    # print(th, '链接被拿走了', conn1._con)
    # print(th, '池子里目前有', pool._idle_cache, '\r\n')

    cursor = conn.cursor()
    cursor.execute('select * from tb1')
    result = cursor.fetchall()
    #并没有关闭,只是把连接放回到了连接池中
    conn.close()


func()


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

开发自定义Mysql连接池

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

开发自定义Mysql连接池

使用第三方包    https://pypi.python.org/pypi/DBUtils      tar -zxvf *.tar.gz * python3 setup.py build && python3 setup.py inst
2023-01-31

java自定义JDBC实现连接池

自定义JavaJDBC连接池本文介绍了如何实现自定义JavaJDBC连接池,提高数据库访问性能。通过定义连接池接口、实现连接池类、配置和使用连接池等步骤,开发者可以创建自己的连接池,管理数据库连接,并获得性能、可伸缩性和资源利用率方面的优势。
java自定义JDBC实现连接池
2024-04-02

MySQL池化框架学习接池自定义

目录引言可池化对象池化工厂对象池API封装引言最近在学习了通用池化框架commons-pool2实践之后,再HTTP性能测试中进行了实践,结果出乎意料,对于性能提升没啥卵用。经过我自己的本地测试,性能也是足够好的。后来我仔细想了想,原来
2022-07-21

java怎么自定义并发线程池

要自定义并发线程池,可以使用`ThreadPoolExecutor`类来实现。`ThreadPoolExecutor`是`ExecutorService`接口的一个实现类,可以用来创建和管理线程池。以下是一个自定义并发线程池的示例:im
2023-10-25

Android开发之自定义CheckBox

要实现的效果如下考虑到关键是动画效果,所以直接继承View。不过CheckBox的超类CompoundButton实现了Checkable接口,这一点值得借鉴。 下面记录一下遇到的问题,并从源码的角度解决。 问题一: 支持 wrap_con
2022-06-06

jdbc中自带MySQL 连接池实践示例

引言在上期文章自定义 mysql 连接池中,我提到了没找到一个特别合适的 MySQL 连接池实现,所以自己写了一个基于通用池化框架commons-pool2的 MySQL 连接池,并且模仿了 Go 语言的gorm框架设计思路,把借和还的操
2022-07-21

ASP.NET如何自定义控件开发

这篇文章主要为大家展示了“ASP.NET如何自定义控件开发”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ASP.NET如何自定义控件开发”这篇文章吧。该控件的功能如下:1.显示服务端时间,并不停
2023-06-17

winform怎么自定义控件开发

在WinForms中自定义控件开发,可以按照以下步骤进行:1. 创建新的类,继承自现有的控件类,比如`UserControl`或`Control`。2. 在类中添加私有变量和属性,用于存储控件的状态和数据。3. 重写基类的方法,以实现控件的
2023-10-10

android自定义toast(widget开发)示例

1、Toast控件: 通过查看源代码,发现Toast里面实现的原理是通过服务Context.LAYOUT_INFLATER_SERVICE获取一个LayoutInflater布局管理器,从而获取一个View对象(TextView),设置内容
2022-06-06

MyBatis iterate的自定义扩展开发

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。在 MyBatis 中,iterate 是一个非常有用的功能,它允许我们遍历集合。要实现自定义扩展开发,我们可以使用 MyBatis 提供的插件接口。下面是
MyBatis iterate的自定义扩展开发
2024-09-22

MySQL自定义函数及触发器

这篇文章主要介绍了MySQL自定义函数及触发器,自定义函数是一种对MySQL扩展的途径,其用法与内置的函数相同,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
2022-11-13

编程热搜

目录