python数据库PooledDB连接池初始化使用示例

 更新时间:2023年08月07日 10:08:33   作者:撸小鱼  
这篇文章主要为大家介绍了python数据库PooledDB连接池初始化使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

版本环境

  • python 3.7
  • DBUtils 1.3
  • mysqlclient 1.4.6

连接池初始化

pool = PooledDB(creator=MySQLdb, mincached=0, maxcached=0,
                maxshared=0, maxconnections=0,
                blocking=False,maxusage=None,
                setsession=None, reset=True,
                failures=None, ping=1,
                *args, **kwargs)

参数说明

  • creator
#creator => 任何符合DB-API 2.0规范的函数或者兼容的数据库模块
  • mincached
#mincached => 初始化时,链接池中至少创建的空闲的链接,0表示不创建
  • maxcached
#maxcached => 链接池中最大闲置的链接数(0和None不限制)
  • maxshared
#maxshared =>  maximum number of shared connections
            (0 or None means all connections are dedicated)
            When this maximum number is reached, connections are
            shared if they have been requested as shareable
  • maxconnections
#maxconnections => 允许的最大链接数(0或None表示不限制)
  • blocking
#blocking => 链接池没有可用链接后,是否阻塞等待。
             True表示阻塞等待,直到获取到链接;
             False不等待,抛异常退出
  • maxusage
#maxusage => 同一个链接最多被重复使用的次数(0和None表示无限制)
  • setsession
#setsession => 可选的会话命令:开始会话前执行的命令列表。
例如["set datestyle to…","set time zone…"]
  • reset
#reset => 当连接放回池中时,重置连接的方式,默认为True。
          False或者None表示使用begin()开启了事务的链接,会执行回滚;
          安全起见,建议使用True,当为True时表示所有链接都执行回滚操作
  • failures
#failures => 当默认的(OperationalError,InternalError)异常不能满足要求时,
             可以自定义抛出异常:默认为None;
             自定义为传入的为tuple或者issubclass(failures, Exception)
  • ping
#ping => 检查连接是否仍然处于活动状态的方式
         0 = None = never, 
         1 = default = whenever fetched from the pool,
         2 = when a cursor is created, 
         4 = when a query is executed,
         7 = always, and all other bit combinations of these values
  • args, kwargs
#args, kwargs => 传递给creator的参数

使用示例

# -*- coding: utf-8 -*-
# @Time    : 2020/1/26 0026 20:28
# @Email   : lofish@foxmail.com(撸小鱼)
import MySQLdb
import MySQLdb.cursors
from DBUtils.PooledDB import PooledDB
import datetime
class DbManager(object):
    def __init__(self, host, port, db_name, user_name, password):
        cmds = ["set names utf8mb4;"]
        conn_args = {'host': host,
                     'port': port,
                     'db': db_name,
                     'user': user_name,
                     'passwd': password,
                     'charset': 'utf8',
                     'cursorclass': MySQLdb.cursors.DictCursor
                     }
        #  初始化时,链接池中至少创建的空闲的链接,0表示不创建,mincached: 5
        #  链接池中最大闲置的链接数(0和None不限制): 20
        self._pool = PooledDB(MySQLdb, mincached=5, maxcached=20, setsession=cmds, **conn_args)
    def connection(self):
        return self._pool.connection()
_db_manager = None
def create_db_manager(host, port, dbname, username, password):
    global _db_manager
    if _db_manager is None:
        _db_manager = DbManager(host, port, dbname, username, password)
    return _db_manager

以上就是python数据库PooledDB连接池初始化使用示例的详细内容,更多关于python数据库PooledDB连接池的资料请关注脚本之家其它相关文章!

相关文章

  • python pandas中对Series数据进行轴向连接的实例

    python pandas中对Series数据进行轴向连接的实例

    今天小编就为大家分享一篇python pandas中对Series数据进行轴向连接的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 详解Python如何巧妙实现数学阶乘n!

    详解Python如何巧妙实现数学阶乘n!

    一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!,本文就给大家介绍如何使用python和第三方库来实现数学运算中的阶乘以及阶乘累计求和
    2023-03-03
  • Python import自己的模块报错问题及解决

    Python import自己的模块报错问题及解决

    这篇文章主要介绍了Python import自己的模块报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • python转换wrf输出的数据为网页可视化json格式

    python转换wrf输出的数据为网页可视化json格式

    这篇文章主要介绍了python转换wrf输出的数据为网页可视化json格式,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • 详解在OpenCV中实现的图像标注技术

    详解在OpenCV中实现的图像标注技术

    图像标注在计算机视觉中很重要,计算机视觉是一种技术,它允许计算机从数字图像或视频中获得高水平的理解力,并以人类的方式观察和解释视觉信息,本文将重点讨论在OpenCV的帮助下创建这些注释,感兴趣的朋友一起看看吧
    2022-06-06
  • Boston数据集预测放假及应用优缺点评估

    Boston数据集预测放假及应用优缺点评估

    这篇文章主要为大家介绍了Boston数据集预测放假及应用优缺点评估,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • 使用Python实现操作控制鼠标和键盘

    使用Python实现操作控制鼠标和键盘

    Python 有很多的库可以实现各种各样的功能,比如使用 pynput 操作,下面小编就来和大家详细介绍一下如何使用pynput进行操作控制鼠标和键盘吧
    2024-02-02
  • Python深度学习神经网络基本原理

    Python深度学习神经网络基本原理

    人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型
    2021-10-10
  • Python+tkinter自定义实现文件选择按钮

    Python+tkinter自定义实现文件选择按钮

    这篇文章主要为大家详细介绍了如何利用Python和tkinter自定义实现简单的文件选择按钮和颜色选择按钮,有需要的小伙伴可以跟随小编一起学习一下
    2023-10-10
  • Python表示当前时间的方法合集

    Python表示当前时间的方法合集

    在 Python 中获取当前时间是许多与时间有关的操作的一个很好的起点。一个非常重要的用例是创建时间戳。在本教程中,你将学习如何用 datetime 模块获取、显示和格式化当前时间
    2023-01-01

最新评论