• Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库


    如何将Excel数据插入到MySQL数据库中

    在实际应用中,我们可能需要将Excel表格中的数据导入到MySQL数据库中,以便于进行进一步的数据分析和处理。本文将介绍如何使用Python将Excel表格中的数据插入到MySQL数据库中。

    导入必要的库

    首先,我们需要导入pandas库和MySQL Connector/Python库,以便于读取Excel文件和连接MySQL数据库。

    import pandas as pd  # 导入pandas库,用于读取Excel文件和处理数据
    import mysql.connector  # 导入MySQL Connector/Python库,用于连接MySQL数据库

    连接数据库

    接下来,我们需要连接MySQL数据库。可以通过MySQL Connector/Python库提供的connect()方法来连接数据库。

    复制代码
    # 连接数据库
    mydb = mysql.connector.connect(
        host=host,  # 数据库主机地址
        user=user,  # 数据库用户名
        password=password,  # 数据库密码
        database=database  # 数据库名称
    )
    复制代码

    其中,host、user、password和database分别是数据库主机地址、数据库用户名、数据库密码和数据库名称,需要根据实际情况进行修改。

    创建游标对象

    连接成功后,我们需要创建游标对象。可以通过MySQL Connector/Python库提供的cursor()方法来创建游标对象。

    # 创建游标对象
    mycursor = mydb.cursor()

    读取Excel文件

    接下来,我们需要读取Excel文件中的数据。可以使用pandas库提供的read_excel()方法来读取Excel文件。

    # 读取Excel文件
    df = pd.read_excel(filename)

    其中,filename是Excel文件的路径,需要根据实际情况进行修改。

    将日期时间类型的列转换为字符串类型

    在将数据插入到MySQL数据库中之前,我们需要将日期时间类型的列转换为字符串类型。可以通过遍历DataFrame中的每一列,并判断该列的数据类型是否为日期时间类型,然后将该列的数据类型转换为字符串类型。

    # 将日期时间类型的列转换为字符串类型
    for col in df.columns:  # 遍历DataFrame中的每一列
        if df[col].dtype == 'datetime64[ns]':  # 如果该列的数据类型是日期时间类型
            df[col] = df[col].astype(str)  # 将该列的数据类型转换为字符串类型

    遍历Excel表格中的每一行,并将每一行插入到数据库中

    接下来,我们需要遍历Excel表格中的每一行,并将每一行插入到数据库中。可以使用pandas库提供的itertuples()方法来遍历DataFrame中的每一行,并使用MySQL Connector/Python库提供的execute()方法来执行SQL插入语句。

    复制代码
    # 遍历Excel表格中的每一行,并将每一行插入到数据库中
    for row in df.itertuples(index=False):  # 遍历DataFrame中的每一行
        sql = f"INSERT INTO {table} (id, 姓名, 国家, 出生日期) VALUES (%s, %s, %s, %s)"  # SQL插入语句
        val = row  # 插入的数据
        mycursor.execute(sql, val)  # 执行SQL插入语句
        print("正在插入数据:", val)  # 输出正在插入的数据
    复制代码

    其中,table是数据库表名,需要根据实际情况进行修改。

    提交更改并关闭数据库连接

    最后,我们需要提交更改并关闭数据库连接。可以使用MySQL Connector/Python库提供的commit()方法来提交更改,并使用close()方法来关闭游标对象和数据库连接。

    # 提交更改并关闭数据库连接
    mydb.commit()  # 提交更改
    mycursor.close()  # 关闭游标对象
    mydb.close()  # 关闭数据库连接

    完整代码如下:

    复制代码
    import pandas as pd  # 导入pandas库,用于读取Excel文件和处理数据
    import mysql.connector  # 导入MySQL Connector/Python库,用于连接MySQL数据库
    
    def insert_excel_data_to_mysql(filename, host, user, password, database, table):
        # 连接数据库
        mydb = mysql.connector.connect(
            host=host,  # 数据库主机地址
            user=user,  # 数据库用户名
            password=password,  # 数据库密码
            database=database  # 数据库名称
        )
    
        # 创建游标对象
        mycursor = mydb.cursor()
    
        # 读取Excel文件
        df = pd.read_excel(filename)
    
        # 将日期时间类型的列转换为字符串类型
        for col in df.columns:  # 遍历DataFrame中的每一列
            if df[col].dtype == 'datetime64[ns]':  # 如果该列的数据类型是日期时间类型
                df[col] = df[col].astype(str)  # 将该列的数据类型转换为字符串类型
    
        # 遍历Excel表格中的每一行,并将每一行插入到数据库中
        for row in df.itertuples(index=False):  # 遍历DataFrame中的每一行
            sql = f"INSERT INTO {table} (id, 姓名, 国家, 出生日期) VALUES (%s, %s, %s, %s)"  # SQL插入语句
            val = row  # 插入的数据
            mycursor.execute(sql, val)  # 执行SQL插入语句
            print("正在插入数据:", val)  # 输出正在插入的数据
    
        # 提交更改并关闭数据库连接
        mydb.commit()  # 提交更改
        mycursor.close()  # 关闭游标对象
        mydb.close()  # 关闭数据库连接
    
    # 使用示例
    filename = r'C:\\Users\\Admin\\Desktop\\重新开始\\Python操作MySQL数据库\\sheet1.xlsx'  # Excel文件路径
    host = "localhost"  # 数据库主机地址
    user = "root"  # 数据库用户名
    password = "123456"  # 数据库密码
    database = "caiwu"  # 数据库名称
    table = "yonghu"  # 数据库表名
    
    insert_excel_data_to_mysql(filename, host, user, password, database, table)  # 调用函数,将Excel数据插入到MySQL数据库中
    复制代码

     

     
  • 相关阅读:
    MySQL 路由配置以及部署方式
    Selenium IDE 的使用指南
    LLM - 绝对与相对位置编码 与 RoPE 旋转位置编码 源码
    【MAUI入门(一、第一个工程)】
    Ribbon讲解
    恶劣天气 3D 目标检测数据集收集
    jackjson下载地址
    flink on k8s
    【c语言】探索内存函数
    leetCode 5. 最长回文子串 动态规划 + 优化空间 / 中心扩展法 + 双指针
  • 原文地址:https://www.cnblogs.com/lcl-cn/p/17793244.html