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数据库中
相关推荐
云天徽上几秒前
【PaddleOCR】OCR表格识别数据集介绍,包含PubTabNet、好未来表格识别、WTW中文场景表格等数据,持续更新中......
python·ocr·文字识别·表格识别·paddleocr·pp-ocrv5
阿里云大数据AI技术14 分钟前
OpenSearch 视频 RAG 实践
数据库·人工智能·llm
你怎么知道我是队长21 分钟前
python-input内置函数
开发语言·python
叹一曲当时只道是寻常38 分钟前
Python实现优雅的目录结构打印工具
python
hbwhmama1 小时前
python高级变量XIII
python
费弗里2 小时前
Python全栈应用开发利器Dash 3.x新版本介绍(3)
python·dash
dme.2 小时前
Javascript之DOM操作
开发语言·javascript·爬虫·python·ecmascript
加油吧zkf2 小时前
AI大模型如何重塑软件开发流程?——结合目标检测的深度实践与代码示例
开发语言·图像处理·人工智能·python·yolo
t_hj2 小时前
python规划
python
m0_623955662 小时前
Oracle使用SQL一次性向表中插入多行数据
数据库·sql·oracle