DBUtils - Python数据库连接池
创建数据库连接池
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 = alwayshost='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()cursor = conn.cursor()cursor.execute('select * from tb1')result = cursor.fetchall()conn.close()使用数据库连接池中的链接
自制sqlhelper
class MySQLhelper(object):def __init__(self, host, port, dbuser, password, database):self.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 = alwayshost=host,port=int(port),user=dbuser,password=password,database=database,charset='utf8')def create_conn_cursor(self):conn = self.pool.connection()cursor = conn.cursor(pymysql.cursors.DictCursor)return conn,cursordef fetch_all(self, sql, args):conn,cursor = self.create_conn_cursor()cursor.execute(sql,args)result = cursor.fetchall()cursor.close()conn.close()return resultdef insert_one(self,sql,args):conn,cursor = self.create_conn_cursor()res = cursor.execute(sql,args)conn.commit()print(res)conn.close()return resdef update(self,sql,args):conn,cursor = self.create_conn_cursor()res = cursor.execute(sql,args)conn.commit()print(res)conn.close()return ressqlhelper = MySQLhelper("127.0.0.1", 3306, "root", "1233121234567", "dragon")# sqlhelper.fetch_all("select * from user where id=%s",(1))# sqlhelper.insert_one("insert into user VALUES (%s,%s)",("jinwangba",4))# sqlhelper.update("update user SET name=%s WHERE id=%s",("yinwangba",1)) 好使不好使,试试就知道了
转载于:https://www.cnblogs.com/xiao-xue-di/p/10137629.html
DBUtils - Python数据库连接池相关推荐
- python 数据库连接池DBUtils
python 数据库连接池DBUtils 0x00 简述 0x01 摘要 0x02 模块 0x03 下载及安装 1.下载 2.安装 0x04 SimplePooledDB 0x05 SteadyDB ...
- 在Python数据库连接池中如何创建请求连接的方案
http://developer.51cto.com/art/201003/189669.htm 在Python数据库连接池中操作过程中如果你设置好了连接池,你就可以按照如下进行操作.通过以下的内容你 ...
- python数据库连接池工具类_Python数据库连接池DBUtils
DBUtils简介 DBUtils是Python的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: 模式一:为每个线程创建一个连接,线程即使调用了close方法,也不会关闭,只是把连接重新放 ...
- Python数据库连接池DBUtils
DBUtils是Python的一个用于实现数据库连接池的模块 此连接池有两种连接模式: DBUtils提供两种外部接口: PersistentDB :提供线程专用的数据库连接,并自动管理连接. ...
- 基于DBUtils实现数据库连接池
小知识: 1.子类继承父类的三种方式 class Dog(Animal): #子类 派生类def __init__(self,name,breed, life_value,aggr):# Animal ...
- python 数据库连接池_【转】Python 数据库连接池
python编程中可以使用pymysql进行数据库连接及增删改查操作,但每次连接mysql请求时,都是独立的去请求访问,比较浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响.因 ...
- Python 数据库连接池
python编程中可以使用pymysql进行数据库连接及增删改查操作,但每次连接mysql请求时,都是独立的去请求访问,比较浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响.因 ...
- python循环顶帖_设计Python数据库连接池1-对象的循环引用问题
在Python中如果对象定义了__del__方法的话,在对象的引用记数为0时会自动调用__del__方法(很象c++中的析构函数),但如果A对象引用B对象,B对象又引用A对象,就形成循环引用,此时A, ...
- python数据库连接池使用
在转载|pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0这一篇中,我使用了方法一.接下来试试方法三 ...
最新文章
- 华为手机设置代理网络就无法使用_华为手机一定要了解的7个设置!1秒开启使用,实在太强大了...
- Oracle创建自增id,sql直接创建
- Hadoop HDFS概念学习系列之熟练掌握HDFS的Shell访问(十五)
- java入门第六天课程_Java基础知识——第六天
- matlab读取pdb文件,使用BioPython读取.pdb文件的整个目录
- 音视频技术开发周刊(第131期)
- 高校计算机基础能力测试文字处理,高校计算机基础论文3篇(共8238字).doc
- 谊品生鲜:放弃传统数据库架构,全站上阿里云
- Ping++ 支付接口对接
- 【数字电子技术 Digital Electronic Technology 4】——门电路笔记 之 TTL门电路详细剖析
- 贪心算法之田忌赛马(超详细)
- 小李飞刀:Python我又来啦,例无虚发~
- FLUENT中关于边界和域的操作
- 算法53----换钱的最小次数和方法数【动态规划】
- QQ第三方登录的应用
- 测试人生 | 为了娃的奶粉钱,测试媛妈妈拿出考研的拼劲,半年终圆大厂梦
- 在线时间戳 (Unix) 转换工具
- 2021 || You Cannot Easily Catch Me: A Low-Detectable Adversarial Patch for Object Detectors
- 为什么我发的视频播放量老涨不上去?
- 水文模型有哪些?SWAT模型、VIC模型、HEC模型、HSPF模型、HYPE模型、SWMM模型、FVCOM模型、Delft3D模型等应用