创建数据库连接池

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数据库连接池相关推荐

  1. python 数据库连接池DBUtils

    python 数据库连接池DBUtils 0x00 简述 0x01 摘要 0x02 模块 0x03 下载及安装 1.下载 2.安装 0x04 SimplePooledDB 0x05 SteadyDB ...

  2. 在Python数据库连接池中如何创建请求连接的方案

    http://developer.51cto.com/art/201003/189669.htm 在Python数据库连接池中操作过程中如果你设置好了连接池,你就可以按照如下进行操作.通过以下的内容你 ...

  3. python数据库连接池工具类_Python数据库连接池DBUtils

    DBUtils简介 DBUtils是Python的一个用于实现数据库连接池的模块. 此连接池有两种连接模式: 模式一:为每个线程创建一个连接,线程即使调用了close方法,也不会关闭,只是把连接重新放 ...

  4. Python数据库连接池DBUtils

    DBUtils是Python的一个用于实现数据库连接池的模块 此连接池有两种连接模式: DBUtils提供两种外部接口:     PersistentDB :提供线程专用的数据库连接,并自动管理连接. ...

  5. 基于DBUtils实现数据库连接池

    小知识: 1.子类继承父类的三种方式 class Dog(Animal): #子类 派生类def __init__(self,name,breed, life_value,aggr):# Animal ...

  6. python 数据库连接池_【转】Python 数据库连接池

    python编程中可以使用pymysql进行数据库连接及增删改查操作,但每次连接mysql请求时,都是独立的去请求访问,比较浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响.因 ...

  7. Python 数据库连接池

    python编程中可以使用pymysql进行数据库连接及增删改查操作,但每次连接mysql请求时,都是独立的去请求访问,比较浪费资源,而且访问数量达到一定数量时,对mysql的性能会产生较大的影响.因 ...

  8. python循环顶帖_设计Python数据库连接池1-对象的循环引用问题

    在Python中如果对象定义了__del__方法的话,在对象的引用记数为0时会自动调用__del__方法(很象c++中的析构函数),但如果A对象引用B对象,B对象又引用A对象,就形成循环引用,此时A, ...

  9. python数据库连接池使用

    在转载|pymysql.err.InternalError: Packet sequence number wrong - got 45 expected 0这一篇中,我使用了方法一.接下来试试方法三 ...

最新文章

  1. 华为手机设置代理网络就无法使用_华为手机一定要了解的7个设置!1秒开启使用,实在太强大了...
  2. Oracle创建自增id,sql直接创建
  3. Hadoop HDFS概念学习系列之熟练掌握HDFS的Shell访问(十五)
  4. java入门第六天课程_Java基础知识——第六天
  5. matlab读取pdb文件,使用BioPython读取.pdb文件的整个目录
  6. 音视频技术开发周刊(第131期)
  7. 高校计算机基础能力测试文字处理,高校计算机基础论文3篇(共8238字).doc
  8. 谊品生鲜:放弃传统数据库架构,全站上阿里云
  9. Ping++ 支付接口对接
  10. 【数字电子技术 Digital Electronic Technology 4】——门电路笔记 之 TTL门电路详细剖析
  11. 贪心算法之田忌赛马(超详细)
  12. 小李飞刀:Python我又来啦,例无虚发~
  13. FLUENT中关于边界和域的操作
  14. 算法53----换钱的最小次数和方法数【动态规划】
  15. QQ第三方登录的应用
  16. 测试人生 | 为了娃的奶粉钱,测试媛妈妈拿出考研的拼劲,半年终圆大厂梦
  17. 在线时间戳 (Unix) 转换工具
  18. 2021 || You Cannot Easily Catch Me: A Low-Detectable Adversarial Patch for Object Detectors
  19. 为什么我发的视频播放量老涨不上去?
  20. 水文模型有哪些?SWAT模型、VIC模型、HEC模型、HSPF模型、HYPE模型、SWMM模型、FVCOM模型、Delft3D模型等应用

热门文章

  1. 权威认可!PolarDB-X高分通过中国信通院《分布式事务数据库稳定性专项评测》
  2. 阿里云AIoT正式发布IoT安全中心和IoT Studio 3.0,进一步巩固AIoT云网边端基础能力
  3. 2020 阿里云原生实战峰会开幕 云原生落地的正确姿势
  4. 腾讯天美六位TA:技术美术这份职业会长期存在吗?
  5. 专访《王者荣耀》美术总监:用6年研究东方美学
  6. MySQL备份与恢复——基于Xtrabackup物理备份恢复
  7. %date:~0,10%用法
  8. redis api-zset
  9. study note9
  10. python 基础 列表