1. 引言
在测试中,频繁地创建和销毁数据库连接会消耗大量的资源,并且可能导致数据库连接的泄露或者性能下降。因此,使用连接池可以有效地管理数据库连接,提高程序的性能和可靠性。
2. 实现MySQL连接池的类
我们将使用Python的pymysql库和dbutils库中的PooledDB来实现MySQL连接池。
- 终端输入命令安装两个库
pip install pymysql
pip install dbutils
- 以下是实现连接池的主要类ConnectMysqlPool的详细介绍:
import pymysql
from dbutils.pooled_db import PooledDB
import os
from common_methods.file_operation import f_p
class ConnectMysqlPool:
"""
连接MySQL数据库的连接池类。
属性:
db_account (dict): 数据库账号信息,包括用户名和密码等。
db (str): 数据库名称。
pool (PooledDB): MySQL连接池对象。
方法:
__init__: 初始化连接池类实例。
_obtaining_data: 从配置文件中获取测试数据。
create_mysql_pool: 创建MySQL连接池。
get_conn: 从连接池中获取一个连接。
close: 关闭数据库连接和游标。
execute: 使用连接执行SQL语句。
"""
def __init__(self, db, db_account):
"""
初始化连接池类实例。
参数:
db (str): 测试库名称。
db_account (dict): 包含数据库账号信息的字典。
"""
self._common_data = self._obtaining_data() # 获取测试数据
self.db_account = db_account # 数据库账号信息
self.db = db # 测试库
# 创建连接池
self.pool = self.create_mysql_pool()
# 从配置文件中获取测试数据
def _obtaining_data(self):
"""
从指定的YAML文件中读取连接配置数据。
返回:
dict: 包含连接配置信息的字典。
"""
file_path = os.path.join(
os.path