利用Python封装MySQLHelper类实现数据库的增删改查功能

 更新时间:2023年06月16日 15:31:10   作者:小小鸟爱吃辣条  
Python 连接 MySQL 的方法有很多,常用的有 pymysql 和 mysql-connector-python 两种库,本文主要介绍了如何封装一个MySQLHelper类,实现对数据库的增删改查功能,感兴趣的可以了解一下

Python 连接 MySQL 的方法有很多,常用的有 pymysql 和 mysql-connector-python 两种库。本文介绍使用 pymysql 库连接 MySQL,并实现基本的增删改查操作。

在使用 pymysql 前需要先安装该库,可使用 pip 命令进行安装:

pip install pymysql

首先,我们可以封装一个 MySQLHelper 类来管理数据库连接和操作:

import pymysql


class MySQLHelper:
    def __init__(self, host, port, user, password, database):
        self.host = host
        self.port = port
        self.user = user
        self.password = password
        self.database = database
        self.conn = pymysql.connect(host=host, port=port, user=user, password=password, database=database)

    def execute(self, sql: str, params: tuple = None):
        """执行 SQL 语句,无返回值"""
        cursor = self.conn.cursor()
        cursor.execute(sql, params or ())
        self.conn.commit()
        cursor.close()

    def query_one(self, sql: str, params: tuple = None):
        """查询并返回单条数据"""
        cursor = self.conn.cursor()
        cursor.execute(sql, params or ())
        result = cursor.fetchone()
        cursor.close()
        return result

    def query_all(self, sql: str, params: tuple = None):
        """查询并返回所有数据"""
        cursor = self.conn.cursor()
        cursor.execute(sql, params or ())
        result = cursor.fetchall()
        cursor.close()
        return result

    def insert(self, table, data: dict):
        """插入一条数据"""
        fields = ','.join(data.keys())
        values = ','.join(['%s'] * len(data))
        sql = 'INSERT INTO %s (%s) VALUES (%s)' % (table, fields, values)
        self.execute(sql, tuple(data.values()))

    def update(self, table, data: dict, where: str = '1=2', where_params: tuple = None):
        """更新数据"""
        set_values = ','.join(['%s=%s' % (field, '%s') for field in data.keys()])
        sql = 'UPDATE %s SET %s WHERE %s' % (table, set_values, where)
        params = tuple(data.values())
        if where_params:
            params += where_params
        self.execute(sql, params)

    def delete(self, table, where: str = '1=2', where_params: tuple = None):
        """删除数据"""
        sql = 'DELETE FROM %s WHERE %s' % (table, where)
        if where_params:
            self.execute(sql, where_params)
        else:
            self.execute(sql)

    def close(self):
        """关闭数据库连接"""
        self.conn.close()

以上 MySQLHelper 类封装了基本的增删改查操作,说明如下:

  • execute 方法用于执行 SQL 语句,无返回值;
  • query_one 方法用于查询并返回单条数据;
  • query_all 方法用于查询并返回所有数据;
  • insert 方法用于插入一条数据;
  • update 方法用于更新数据;
  • delete 方法用于删除数据;
  • close 方法用于关闭数据库连接。

在使用 MySQLHelper 类时,需要先实例化一个对象,并传递数据库连接参数。以下是一个简单的示例:

if __name__ == '__main__':
    helper = MySQLHelper('localhost', 3306, 'root', 'your_password', 'mydatabase')
    helper.insert('mytable', {'column1': 'value1', 'column2': 'value2'})
    helper.update('mytable', {'column1': 'new_value'}, 'id=%s', (1,))
    helper.delete('mytable', 'id=%s', (1,))
    result = helper.query_one('SELECT column1 FROM mytable WHERE id=%s', (1,))
    helper.close()

以上示例代码使用 MySQLHelper 连接到名为 mydatabase 的数据库,并操作名为 mytable 的表。具体实现了数据库的增、删、改、查等功能。执行完毕后,还需调用 close 方法关闭数据库连接。

总体而言,使用 Python 和 pymysql 库连接和操作 MySQL 数据库非常简单方便,可以轻松地完成各种数据库操作任务。

到此这篇关于利用Python封装MySQLHelper类实现数据库的增删改查功能的文章就介绍到这了,更多相关Python数据库增删改查内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 什么是Python包的循环导入

    什么是Python包的循环导入

    在本篇文章里小编给大家整理的是关于什么是Python包的循环导入的相关知识点,有兴趣的朋友们可以参考下。
    2020-09-09
  • Python字符串中如何去除数字之间的逗号

    Python字符串中如何去除数字之间的逗号

    这篇文章主要介绍了Python字符串中如何去除数字之间的逗号,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python读取二进制文件代码方法解析

    Python读取二进制文件代码方法解析

    这篇文章主要介绍了Python读取二进制文件代码方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python控制多进程与多线程并发数总结

    Python控制多进程与多线程并发数总结

    本篇文章主要介绍了Python控制多进程与多线程并发数,详细讲诉了进程和线程的区别,并介绍了处理方法,有需要的朋友可以了解一下。
    2016-10-10
  • 利用Python绘制酷炫的3D地图

    利用Python绘制酷炫的3D地图

    pyecharts是一款将python与echarts结合的强大的数据可视化工具。本文将为大家介绍如何利用pyecharts绘制酷炫的3D地图,感兴趣的小伙伴可以试一试
    2022-03-03
  • 解决python DataFrame 打印结果不换行问题

    解决python DataFrame 打印结果不换行问题

    这篇文章主要介绍了解决python DataFrame 打印结果不换行问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • Django中log日志记录的最佳实践

    Django中log日志记录的最佳实践

    Django中的log日志记录是一个非常重要的功能,可以帮助开发者快速定位和解决问题。本文将介绍Django中log日志记录的基本概念和使用方法,并提供一些最佳实践,帮助开发者更好地利用log日志记录功能。
    2023-04-04
  • python之如何实现延迟操作

    python之如何实现延迟操作

    这篇文章主要介绍了python之如何实现延迟操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • 基于Python自制视觉桌上冰球小游戏

    基于Python自制视觉桌上冰球小游戏

    这篇文章主要和大家分享一下如何使用 mediapipe+opencv 制作桌上冰球的交互式小游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-04-04
  • Python Pyecharts绘制象形柱图

    Python Pyecharts绘制象形柱图

    echarts是百度开源的一个数据可视化JS库,主要用于数据可视化。pyecharts是一个用于生成Echarts图表的类库。实际上就是Echarts与Python的对接。本文将利用pyecharts库绘制象形柱状图,感兴趣的可以了解一下
    2022-01-01

最新评论