为了更深入地理解和操作MySQL数据库,通过定义一个类MySQL来封装数据库连接、查询执行、结果处理等常用功能,不仅可以提高代码的可维护性,还能简化数据库操作流程
本文将详细探讨如何定义一个功能全面的MySQL类,涵盖连接管理、查询执行、异常处理以及资源管理等多个方面
一、引言 在定义MySQL类之前,我们需要明确该类应具备的基本功能: 1.数据库连接:能够建立与MySQL数据库的连接,并支持配置连接参数(如主机、端口、用户名、密码、数据库名等)
2.查询执行:能够执行SQL语句,包括SELECT、INSERT、UPDATE、DELETE等操作
3.结果处理:能够处理查询结果,提供方便的方法获取结果集
4.异常处理:能够捕获并处理数据库操作过程中的异常,确保程序的健壮性
5.资源管理:能够自动管理数据库连接资源,避免资源泄露
二、定义MySQL类 基于上述功能需求,我们可以开始定义MySQL类
以下是一个Python实现的示例,Python的`pymysql`库提供了与MySQL交互的便捷接口
python import pymysql from pymysql.err import OperationalError, MySQLError class MySQL: def__init__(self, host, user, password, database, port=3306, charset=utf8mb4): 初始化MySQL类实例,设置数据库连接参数
self.host = host self.user = user self.password = password self.database = database self.port = port self.charset = charset self.connection = None def connect(self): 建立数据库连接
try: self.connection = pymysql.connect( host=self.host, user=self.user, password=self.password, database=self.database, port=self.port, charset=self.charset, cursorclass=pymysql.cursors.DictCursor 返回字典格式的查询结果 ) print(数据库连接成功) except OperationalError as e: print(f数据库连接失败:{e}) self.connection = None def execute_query(self, query, params=None): 执行SELECT查询,返回结果集
if not self.connection: print(请先建立数据库连接) return None try: with self.connection.cursor() as cursor: cursor.execute(query, params) result = cursor.fetchall() return result except MySQLError as e: print(f查询执行失败:{e}) return None def execute_non_query(self, query, params=None): 执行非SELECT查询(INSERT、UPDATE、DELETE等),返回影响行数
if not self.connection: print(请先建立数据库连接) return None try: with self.connection.cursor() as cursor: cursor.execute(query, params) self.connection.commit() return cursor.rowcount except MySQLError as e: self.connection.rollback() print(f非查询执行失败:{e}) return None def close(self): 关闭数据库连接
if self.connection: self.connection.close() print(数据库连接已关闭) def__del__(self): 析构函数,确保对象销毁时关闭数据库连接
self.close() 三、功能详解与示例 1. 数据库连接 `__init__`方法用于初始化MySQL类的实例,设置数据库连接所需的基本参数
`connect`方法则负责建立实际的数据库连接
python db = MySQL(localhost, root, pas