当前位置: 首页 > news >正文

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数据库中
http://www.lryc.cn/news/322024.html

相关文章:

  • Stable Diffusion训练图片时,简陋的数据处理
  • 如何在ubuntu 18.04中升级python 3.6到3.7
  • python爬虫基础实验:通过DBLP数据库获取数据挖掘顶会KDD在2023年的论文收录和相关作者信息
  • 简单记录一次帮维修手机经历(Vivo x9)
  • ap聚类是什么
  • C数据类型(C语言)---变量的类型决定了什么?
  • axios、axios二次封装、api解耦
  • HTML 特殊元素:展示PDF、展示JSON 数据
  • 算法·动态规划Dynamic Programming
  • 鸿蒙Harmony应用开发—ArkTS-转场动画(共享元素转场)
  • 【C语言】循环语句(语句使用建议)
  • Spring Data访问Elasticsearch----响应式Reactive存储库
  • 堆排序(c语言)
  • 开源IT自动化运维工具Ansible解析
  • 【C++】仿函数优先级队列反向迭代器
  • UE4_调试工具_绘制调试球体
  • 机器人路径规划:基于冠豪猪优化算法(Crested Porcupine Optimizer,CPO)的机器人路径规划(提供MATLAB代码)
  • 探索.NET中的定时器:选择最适合你的应用场景
  • 5467: 【搜索】流浪奶牛
  • spring boot整合elasticsearch实现查询功能
  • 白嫖阿里云程序员日历
  • ubuntu20.04搭建rtmp视频服务
  • Request failed with status code 504,Gateway time out
  • 四、Elasticsearch 进阶
  • 海外云手机如何帮助亚马逊引流?
  • Gateway新一代网关
  • Simulink中Scope图像导出在MATLAB上重新画
  • 利用opencv获取系统时间
  • Go环境变量配置,及GOROOT、GOPATH的区别
  • 爬虫系列-CSS基础语法