# -*- coding: utf-8 -*-
"""
@Time : 2023/3/29 17:15
@Auth : Tutu
@File : mysql_conn_pool.py
@IDE : PyCharm
@Description :
"""
import pymysql
from dbutils.pooled_db import PooledDB
from loguru import logger
from app.errors.errors import InsertException
class MySQLPool(object):
# 创建单例模式
__instance = None
def __new__(cls, *args, **kwargs):
if cls.__instance is None:
cls.__instance = object.__new__(cls)
return cls.__instance
def __init__(self, config_dict, **kwargs):
self.pool = PooledDB(creator=pymysql, # 使用连接数据库的模块 psycopg2
maxconnections=20, # 连接池允许的最大连接数,0 和 None 表示不限制连接数
mincached=1, # 初始化时,链接池中至少创建的空闲的链接,0 表示不创建
maxcached=10, # 链接池中最多闲置的链接,0 和 None 不限制
blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
maxusage=None, # 一个链接最多被重复使用的次数,None 表示无限制
setsession=[], # 开始会话前执行的命令列表
**config_dict,
**kwargs)
def get_connection(self):
return self.pool.connection()
def execute(self, sql, args=None):
conn = self.pool.connection()
cursor = conn.cursor()
cursor.execute(sql, args)
result_set = cursor.fetchall()
conn.commit()
cursor.close()
conn.close()
return result_set
def close(self):
self.pool.close()
一个python的mysql连接池工具类
最新推荐文章于 2024-11-02 16:28:26 发布