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连接