一个非常不错的python操作mysql 的类

一个非常不错的python操作mysql 的类

环境准备

pip install pymysql

具体代码

import pymysql
from pymysql.cursors import DictCursor

class MySQLHandler:
    def __init__(self, host, user, password, database, port=3306, charset='utf8mb4'):
        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=DictCursor  # 返回字典类型结果
            )
        except pymysql.MySQLError as e:
            print(f"连接数据库失败: {e}")
            raise

    def close(self):
        """关闭连接"""
        if self.connection:
            self.connection.close()

    def execute_query(self, sql, params=None):
        """执行查询语句(返回多条数据)"""
        try:
            with self.connection.cursor() as cursor:
                cursor.execute(sql, params)
                return cursor.fetchall()
        except pymysql.MySQLError as e:
            print(f"查询失败: {e}")
            self.connection.rollback()
            raise

    def execute_update(self, sql, params=None):
        """执行更新语句(插入/更新/删除)"""
        try:
            with self.connection.cursor() as cursor:
                rows_affected = cursor.execute(sql, params)
                self.connection.commit()
                return rows_affected
        except pymysql.MySQLError as e:
            print(f"更新失败: {e}")
            self.connection.rollback()
            raise

    def get_one(self, sql, params=None):
        """查询单条数据"""
        try:
            with self.connection.cursor() as cursor:
                cursor.execute(sql, params)
                return cursor.fetchone()
        except pymysql.MySQLError as e:
            print(f"查询单条数据失败: {e}")
            self.connection.rollback()
            raise

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注