使用Python连接MySQL数据库并进行操作的简单实例

Python在数据处理和分析领域的应用越来越广泛,而MySQL数据库是一个常用的关系型数据库管理系统。在本文中,我们将介绍如何使用Python连接MySQL数据库,并进行查询、更新、新增、批量插入等操作。

1. 准备工作

在开始之前,我们需要安装pymysql库,这是一个用于操作MySQL数据库的Python库。你可以使用以下命令进行安装:

pip install pymysql

2. 连接MySQL数据库

import pymysql

MYSQL_HOST = ''  # 数据库地址
MYSQL_PORT = ''  # 数据库端口
MYSQL_USER = ''  # 数据库用户名
MYSQL_PASSWD = ''  # 数据库密码
MYSQL_DB = ''  # 数据库名称
MYSQL_CHARSET = ''  # 数据库字符集

class MysqlDb:
    def __init__(self):
        self.conn = pymysql.connect(
            host=MYSQL_HOST,
            port=MYSQL_PORT,
            user=MYSQL_USER,
            passwd=MYSQL_PASSWD,
            db=MYSQL_DB,
            charset=MYSQL_CHARSET,
        )
        self.cur = self.conn.cursor(cursor=pymysql.cursors.DictCursor)

    def __del__(self):
        # 关闭游标
        self.cur.close()
        # 关闭数据库连接
        self.conn.close()

3. 查询数据库

    def select_db(self, sql):
        """
        查询
        :param sql: sql语句
        :return: 查询结果
        """
        # 检查连接是否断开,如果断开就进行重连
        self.conn.ping(reconnect=True)
        # 使用execute() 执行sql
        self.cur.execute(sql)
        # 使用 fetchall()获取查询结果
        data = self.cur.fetchall()
        return data

4. 更新、新增、删除操作

    def execute_db(self, sql):
        """
        更新、新增、删除
        :param sql: sql语句
        :return: 操作结果
        """
        try:
            # 检查连接是否断开,如果断开就进行重连
            self.conn.ping(reconnect=True)
            # 使用execute() 执行sql
            self.cur.execute(sql)
            # 提交事务
            self.conn.commit()
            return {'code': 200, 'data': '', 'msg': '操作成功'}
        except Exception as e:
            print('操作错误:{}'.format(e))
            # 回滚所有更改
            self.conn.rollback()
            return {'code': 203, 'data': '', 'msg': '操作失败'}

5. 批量插入数据

    def insert_many_db(self, db_name: str, data_title: list, data_list: list):
        """
        批量插入数据
        :param db_name: 数据库名称
        :param data_title: 数据库表头信息,格式为[a, b, c, d, e]
        :param data_list: 插入信息,格式为[[第一条],[第二条],[第三条],[第四条]]
        :return: 插入结果
        """
        self.conn.ping(reconnect=True)
        try:
            # 处理通配符占位
            ls = ','.join(['%s' for _ in range(len(data_title))])
            # 字段信息列表转str
            data_title = ','.join([item for item in data_title])
            self.conn.ping(reconnect=True)
            self.cur.executemany(f"insert into {db_name} ({data_title}) values ({ls})", data_list)
            self.conn.commit()
            return {'code': 200, 'data': '', 'msg': '插入成功'}
        except Exception as ex:
            print('操作错误:{}'.format(ex))
            self.conn.rollback()
            return {'code': 203, 'data': '', 'msg': '插入失败'}

需要提供数据库名称、数据表头信息和插入的数据列表。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值