From b46982e6654b860bbbba4f780b95d2ebc8939da6 Mon Sep 17 00:00:00 2001 From: liuwei Date: Wed, 19 Mar 2025 10:00:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=99=A8=E5=8D=95=E4=BE=8B=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/connection.py | 41 +++++++++++++++++++---------------------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/db/connection.py b/db/connection.py index c614b82..5908c90 100644 --- a/db/connection.py +++ b/db/connection.py @@ -1,7 +1,5 @@ import logging -import pymysql -from pymysql.cursors import DictCursor -from dbutils.pooled_db import PooledDB +import mysql.connector import redis class DBConnectionManager: @@ -59,24 +57,23 @@ class DBConnectionManager: if not config: self.logger.warning("MySQL配置为空,跳过初始化") return - - self.mysql_pool = PooledDB( - creator=pymysql, - maxconnections=10, # 连接池最大连接数 - mincached=2, # 初始化时,连接池中至少创建的空闲的连接 - maxcached=5, # 连接池中最多闲置的连接 - blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待 - maxusage=None, # 一个连接最多被重复使用的次数,None表示无限制 - setsession=[], # 开始会话前执行的命令列表 - ping=0, # ping MySQL服务端,检查是否服务可用 - host=config.get('host', 'localhost'), - port=config.get('port', 3306), - user=config.get('user', 'root'), - password=config.get('password', ''), - database=config.get('database', ''), - charset=config.get('charset', 'utf8mb4'), - cursorclass=DictCursor - ) + + # 准备连接池配置 + pool_config = { + 'pool_name': 'wechat_robot_pool', + 'pool_size': 10, # 连接池大小 + 'host': config.get('host', 'localhost'), + 'port': config.get('port', 3306), + 'user': config.get('user', 'root'), + 'password': config.get('password', ''), + 'database': config.get('database', ''), + 'charset': config.get('charset', 'utf8mb4'), + 'use_pure': True, # 使用纯Python实现 + 'autocommit': True + } + + # 创建连接池 + self.mysql_pool = mysql.connector.pooling.MySQLConnectionPool(**pool_config) self.logger.info("MySQL连接池初始化成功") except Exception as e: self.logger.error(f"MySQL连接池初始化失败: {e}") @@ -118,7 +115,7 @@ class DBConnectionManager: if self.mysql_pool is None: raise Exception("MySQL连接池未初始化") - return self.mysql_pool.connection() + return self.mysql_pool.get_connection() def get_redis_connection(self): """获取Redis连接