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

 更新时间:2023年10月28日 09:15:30   作者:悬崖上的金鱼  
在实际应用中,我们可能需要将Excel表格中的数据导入到MySQL数据库中,以便于进行进一步的数据分析和处理,本文将介绍如何使用Python将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数据库中

到此这篇关于Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库的文章就介绍到这了,更多相关Python获取Excel数据写入到MySQL数据库内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 无法使用pip命令安装python第三方库的原因及解决方法

    无法使用pip命令安装python第三方库的原因及解决方法

    今天小编就为大家分享一篇无法使用pip命令安装python第三方库的原因及解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • python 实现两个字符串乘法小练习

    python 实现两个字符串乘法小练习

    这篇文章主要给大家分享的是python 实现两个字符串乘法小练习,两个字符串相乘,基本思路是num1依次乘以num2各个数位上的数字,下面分享的内容,可作为大家平时学习的小练习,需要的朋友可以参考下,希望对你的学习有所帮助
    2022-02-02
  • linux之父进程使用kill函数杀死子进程方式

    linux之父进程使用kill函数杀死子进程方式

    这篇文章主要介绍了linux之父进程使用kill函数杀死子进程方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • pytorch中with torch.no_grad():的用法实例

    pytorch中with torch.no_grad():的用法实例

    最近在看别人写的代码,遇到经常使用with torch.no_grad(),所以下面这篇文章主要给大家介绍了关于pytorch中with torch.no_grad():用法的相关资料,需要的朋友可以参考下
    2022-03-03
  • 基于Python做一个简单的动图生成器

    基于Python做一个简单的动图生成器

    现在的年轻人都开始每天保温杯里泡枸杞,这怎么能行呢?于是怀揣着愉悦心情的想法,我开始制作GIF动图生成器,这个小工具制作的目的是为了将多张图片组合后生成一张动态的GIF图片,感兴趣的可以尝试一下
    2023-01-01
  • Python学习之装饰器与类的装饰器详解

    Python学习之装饰器与类的装饰器详解

    这篇文章通过示例详细为大家介绍了Python中的装饰器以及类的装饰器。通过学习装饰器可以让我们更好更灵活的使用函数,还可以让我们的代码更加优雅,感兴趣的可以学习一下
    2022-03-03
  • python频繁写入文件时提速的方法

    python频繁写入文件时提速的方法

    在本篇内容里小编给大家整理了关于python频繁写入文件时提速的方法以及相关代码,需要的朋友们学习下。
    2019-06-06
  • 根据DataFrame某一列的值来选择具体的某一行方法

    根据DataFrame某一列的值来选择具体的某一行方法

    今天小编就为大家分享一篇根据DataFrame某一列的值来选择具体的某一行方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 新手Python环境配置指南及pip安装教程

    新手Python环境配置指南及pip安装教程

    这篇文章主要给大家介绍了新手Python环境配置指南及pip安装教程的相关资料,pip是一款非常方便的python包管理工具,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • Python中创建相关系数矩阵的方法小结

    Python中创建相关系数矩阵的方法小结

    相关系数矩阵是一种用于衡量变量之间关系的重要工具,本文将介绍在 Python 中创建相关系数矩阵的不同方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12

最新评论