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数据库中
相关推荐
2501_941144429 分钟前
Python + C++ 异构微服务设计与优化
c++·python·微服务
空空kkk11 分钟前
MyBatis——代理Dao方式的增删改查操作
java·数据库·mybatis
4***5732 分钟前
数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(一).创建基础表
数据库·mysql·oracle
啊吧怪不啊吧32 分钟前
SQL之表的字符串内置函数详解
大数据·数据库·sql
F***741734 分钟前
数据库课设---酒店管理系统(MySQL、VBNet)
android·数据库·mysql
ChoSeitaku1 小时前
线代强化NO19|矩阵的相似与相似对角化
python·线性代数·矩阵
1***t8271 小时前
MySQL 8.0安装
数据库·mysql·adb
sniper_fandc1 小时前
Coze智能体实现人生模拟器
python·ai·agent·coze
c***69301 小时前
使用mysql报Communications link failure异常解决
数据库·mysql
t***q331 小时前
关于Mysql 中 Row size too large (> 8126) 错误的解决和理解
数据库·mysql