怎么创建python数据库连接池
发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,这篇文章主要介绍"怎么创建python数据库连接池",在日常操作中,相信很多人在怎么创建python数据库连接池问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"怎么创建p
千家信息网最后更新 2024年11月25日怎么创建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安全错误
数据库的锁怎样保障安全
广西全民参保数据库
软件开发转测试都学什么
数据库加密存储unity c
table循环填充数据库
网络安全办公室监控力度
网络安全威胁论文摘要
第一批网络安全示范学校
数据库课程设计资料如何去收集
08sql数据库怎么卸载
软件开发合同过期失效
优化易语言读取数据库数据
自建云笔记服务器
北京软件开发服务费
数据库时间的比较日
小米手环6软件开发
mt7620打印服务器固件
软件开发劳务成本凭证
吴江区电子网络技术哪个好
元氏网络安全会议
数据库技术的作业及答案
静安区专业软件开发服务密度
自动连接频道服务器
服务器架设与管理论文
关于网络安全的儿歌简单
网络安全标准app
怎么新建数据库用户
临沂网络技术有限公司
网络安全宣传稿200字
奥讯网络技术有限公司怎么样
手机用什么软件保证网络安全