Python3实现的Mysql数据库操作封装类

Python3实现的Mysql数据库操作封装类

本文主要介绍了如何使用Python3实现Mysql数据库的基本操作,封装一个操作Mysql数据库的类。该类可以完成数据库的增、删、改、查等操作,使用方法简单方便。

环境准备

在使用本封装类之前,需要先安装好Mysql数据库,以及相应的Python Mysql库。可以通过下面的命令进行安装:

pip install pymysql

操作封装类的实现

操作封装类的核心是将Mysql数据库操作的基本方法,封装到一个类里面。本文使用了Python的面向对象编程技术,定义了一个Mysql类,提供了数据库的增、删、改、查等操作方法。以下是封装类的核心代码:

import pymysql

class Mysql(object):
    def __init__(self, host=None, port=None, user=None, password=None, db=None, charset=None):
        '''
        初始化方法
        '''
        self.host = host or 'localhost'
        self.port = port or 3306
        self.user = user or 'root'
        self.password = password or 'password'
        self.db = db or 'test'
        self.charset = charset or 'utf8mb4'

        self.conn = None
        self.cursor = None

    def __enter__(self):
        '''
        实现with语句需要的方法
        '''
        return self.connect()

    def __exit__(self, exc_type, exc_val, exc_tb):
        '''
        实现with语句需要的方法
        '''
        self.close()

    def connect(self):
        '''
        连接数据库方法
        '''
        self.conn = pymysql.connect(
            host=self.host,
            port=self.port,
            user=self.user,
            password=self.password,
            db=self.db,
            charset=self.charset,
            cursorclass=pymysql.cursors.DictCursor
        )

        self.cursor = self.conn.cursor()

        return self

    def close(self):
        '''
        关闭数据库连接方法
        '''
        if self.cursor:
            self.cursor.close()

        if self.conn:
            self.conn.close()

        return self

    def commit(self):
        '''
        提交事务方法
        '''
        self.conn.commit()

        return self

    def rollback(self):
        '''
        回滚事务方法
        '''
        self.conn.rollback()

        return self

    # select查询语句
    def select(self, table_name, where=None, fields=None, limit=None, order_by=None):
        fields = fields or '*'

        sql = 'SELECT %s FROM `%s`' % (fields, table_name)

        if where:
            sql += ' WHERE %s' % where

        if order_by:
            sql += ' ORDER BY %s' % order_by

        if limit:
            sql += ' LIMIT %s' % limit

        self.cursor.execute(sql)

        return self.cursor.fetchall()

    # insert插入语句
    def insert(self, table_name, data):
        fields = ','.join(data.keys())
        values = ','.join(['"%s"' % v for v in data.values()])

        sql = 'INSERT INTO `%s` (%s) VALUES (%s)' % (table_name, fields, values)

        try:
            self.cursor.execute(sql)
            self.commit()
            return self.cursor.lastrowid
        except:
            self.rollback()

    # update更新语句
    def update(self, table_name, data, where=None):
        values = ','.join(['%s="%s"' % (k, v) for k, v in data.items()])

        sql = 'UPDATE `%s` SET %s' % (table_name, values)

        if where:
            sql += ' WHERE %s' % where

        try:
            self.cursor.execute(sql)
            self.commit()
            return self.cursor.rowcount
        except:
            self.rollback()

    # delete删除语句
    def delete(self, table_name, where=None):
        sql = 'DELETE FROM `%s`' % table_name

        if where:
            sql += ' WHERE %s' % where

        try:
            self.cursor.execute(sql)
            self.commit()
            return self.cursor.rowcount
        except:
            self.rollback()

代码说明:

  • 初始化方法:设置了数据库的连接参数,创建连接和游标对象。
  • enter()和__exit__()方法:用于实现上下文管理器,可以使用with语句连接和关闭数据库。
  • connect()和close()方法:连接和关闭数据库。
  • commit()和rollback()方法:提交和回滚事务。
  • select()方法:查询操作。
  • insert()方法:插入操作。
  • update()方法:更新操作。
  • delete()方法:删除操作。

示例用法

下面来看2个使用该封装类的简单示例。

示例1:查询数据

from mysql import Mysql

if __name__ == '__main__':
    with Mysql(db='test') as mysql:
        result = mysql.select('user', where='status=1', limit=10)
        for row in result:
            print(row)

执行以上代码可以查询user表的前10条记录。

示例2:插入数据

from mysql import Mysql

if __name__ == '__main__':
    data = {
        'name': '张三',
        'age': 18,
        'status': 1
    }

    with Mysql(db='test') as mysql:
        mysql.insert('user', data)

执行以上代码可以插入一条新记录到user表中。

总结

本文介绍了如何使用Python3封装Mysql数据库的基本操作,提供了一个操作Mysql的封装类,可以实现数据库增、删、改、查等通用操作。示例代码也展示了如何使用该封装类进行数据库操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3实现的Mysql数据库操作封装类 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • windows系统快速安装pytorch的详细图文教程

    下面是详细的攻略: 确定系统和Python版本 安装PyTorch的前提是你已经安装了Python环境。同时你需要知道你的操作系统和Python版本。建议使用Python 3以上的版本。接下来将以Windows 10和Python 3.6为例进行说明。 选择安装PyTorch的方式 在安装PyTorch之前,你需要选择一个安装方式,PyTorch支持多种安装…

    python 2023年5月14日
    00
  • python如何保证输入键入数字的方法

    要保证输入键入的是数字,可以使用Python内置的input()函数,结合try-except语句处理异常。具体的方法如下: 使用input()函数获取用户的输入,代码如下: user_input = input("请输入一个数字:") 利用try-except语句处理异常。如果用户输入的不是数字,那么会抛出ValueError异常。我们…

    python 2023年5月18日
    00
  • Python正则表达式非贪婪、多行匹配功能示例

    Python正则表达式非贪婪、多行匹配功能示例 在Python正则表达式中,有两个非常有用的功能:非贪婪匹配和多行匹配。贪婪匹配指的是尽可能多地匹配字符,而不尽可能少地匹配字符;非贪婪匹配则相反,尽可能少地匹配字符。多行匹配指的是匹配多行文本,而不是单行文本。下面将分别介绍两个功能,并提供两个示例说明。 非贪婪匹配 在正则表达式中,*和+默认是贪的,即尽可能…

    python 2023年5月14日
    00
  • Python如何测试stdout输出

    测试stdout输出是Python测试中一个非常重要的部分,因为很多Python代码都依赖于stdout来输出结果。在Python中测试stdout输出可以使用unittest和pytest两个常用的测试框架。 使用unittest进行stdout输出测试 在unittest框架中,可以使用io.StringIO模块来捕获stdout输出。下面是一个示例代码…

    python 2023年6月3日
    00
  • python执行系统命令后获取返回值的几种方式集合

    下面是关于”python执行系统命令后获取返回值的几种方式集合”的完整攻略。 1. subprocess模块的使用 subprocess 模块是 Python 的一个标准库,用于在 Python 脚本中执行外部程序或命令。 在执行完命令之后,可以获取命令执行的返回值,代码如下: import subprocess # 执行命令 p = subprocess.…

    python 2023年5月14日
    00
  • 用Python中的NumPy在点(x,y)上评估一个二维Hermite_e数列

    要用Python中的NumPy在某个点上评估一个二维Hermite_e数列,我们可以遵循以下步骤: 步骤一:导入NumPy库 首先,我们需要导入NumPy库。可以使用下面的代码进行导入: import numpy as np 步骤二:定义二维Hermite_e数列 接下来,我们需要定义一个二维Hermite_e数列,可以使用以下代码: def hermite…

    python-answer 2023年3月25日
    00
  • 关于python的第三方库下载与更改方式

    关于Python的第三方库下载与更改方式,我来为您提供一份完整的攻略。 下载第三方库 利用pip下载:在终端或命令行中输入 pip install 库名 即可下载该库。示例: pip install pandas 利用官方网站下载:访问对应库的官方网站,下载对应平台的安装包或源码,根据安装说明进行安装即可。示例:访问numpy官网,下载对应版本的whl文件:…

    python 2023年5月14日
    00
  • 如何在Python中使用pymysql库连接MySQL数据库?

    以下是如何在Python中使用pymysql库连接MySQL数据库的完整使用攻略,包括安装pymysql库、连接MySQL数据库、执行SQL语句等骤。同时,提供了两个示例以便更好理解如何使用pymysql库连接MySQL数据库。 步骤1:安装pymysql库 在Python中,我们可以使用pip命令安装pymysql库。以下是安装pymysql库基本语法: …

    python 2023年5月12日
    00
合作推广
合作推广
分享本页
返回顶部