怎么创建python数据库连接池
发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,这篇文章主要介绍"怎么创建python数据库连接池",在日常操作中,相信很多人在怎么创建python数据库连接池问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么创建p
千家信息网最后更新 2025年02月22日怎么创建python数据库连接池
这篇文章主要介绍"怎么创建python数据库连接池",在日常操作中,相信很多人在怎么创建python数据库连接池问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么创建python数据库连接池"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1、不使用数据库连接池,每次操作都要链接数据库,链接次数过多
conn = pymysql.connect(host="127.0.0.1",port=3306,user='root',password='123', database='pooldb',charset='utf8') cursor = conn.cursor() cursor.execute("select * from td where id=%s", [5, ]) result = cursor.fetchall() # 获取数据 cursor.close() conn.close() # 关闭链接
这种方式每次请求,反复创建数据库链接,多次链接数据库会非常耗时
2、创建一个链接池,为所有线程提供连接,使用时来进行获取,使用完毕后在放回到连接池。
PS:假设最大链接数有10个,其实也就是一个列表,当你pop一个,系统会再append一个,链接池的所有的链接都是按照排队的这样的方式来链接的。链接池里所有的链接都能重复使用,共享的, 即实现了并发,又防止了链接次数太多
import timeimport pymysqlimport threadingfrom DBUtils.PooledDB import PooledDB, SharedDBConnectionPOOL = 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中并返回。 # 一旦关闭链接后,连接就返回到连接池让后续线程继续使用。 # 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()
到此,关于"怎么创建python数据库连接池"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
链接
数据
数据库
学习
最大
次数
对象
方式
更多
模块
线程
封装
帮助
服务
限制
实用
接下来
也就是
命令
数量
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
表格图片存数据库
计算机网络技术是理科专业吗
密云区网络技术咨询清单
基站和服务器哪个牛逼
网络安全法关键点是什么
华创奇信互联网科技
服务器10k啥意思
php数据库操作实例
雅安软件开发操作
数据库建库 图书管理
软件开发与设计体系
sql数据库 文件分割
上海网络安全现状
网络安全设计思路
石家庄跑分软件开发
新华互联网科技类专业
银川电力需求侧管理软件开发
服务器域网络管理是什么东西
白鹭软件开发中心吃豆人游戏
服务器cve修复
怎么编辑mvc连接数据库
单机传奇 物品数据库
服务器 下载攻击
北京京石网络技术有限公司
数据库union查询失效
山西兆承网络技术有限公司
黑龙江三本计算机网络技术
制定网络安全法 是为了
临沂润锦网络技术有限公司
组态王数据库时间段查询