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数据库中
Python 利用pandas和mysql-connector获取Excel数据写入到MySQL数据库的更多相关文章
- Python利用pandas处理Excel数据的应用
Python利用pandas处理Excel数据的应用 最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做 ...
- 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称
说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...
- python 利用三方的xlrd模块读取excel文件,处理合并单元格
目的: python能使用xlrd模块实现对Excel数据的读取,且按照想要的输出形式. 总体思路: (1)要想实现对Excel数据的读取,需要用到第三方应用,直接应用. (2)实际操作时候和我 ...
- Excel连接到MySQL,将Excel数据导入MySql,MySQL for Excel,,
Excel连接到MySQL 即使当今时代我们拥有了类似微软水晶报表之类的强大报表工具和其他一些灵活的客户管 理应用工具,众多企业在分析诸如销售统计和收入信息的时候,微软的Excel依然是最常用的工具. ...
- 使用命令行将Excel数据表导入Mysql中的方法小结
从Excel数据表导入MySQL,已经做过好几次了,但每次都会碰到各种问题:invalid utf8 character string, data too long, ...,浪费了不少时间 为了提高 ...
- MySQL批量导入Excel数据
MySQL批量导入Excel数据 1.确定需要导入数据的表名称以及字段,然后在新建的Excel表中,按照表字段正确排序:(注:(Excel文件的名称最好和数据库的名称一致,sheet表的名字最好和表名 ...
- C#将Excel数据表导入SQL数据库的两种方法(转)
最近用写个winform程序想用excel 文件导入数据库中,网上寻求办法,找到了这个经过尝试可以使用. 方法一: 实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环 ...
- C#将Excel数据表导入SQL数据库的两种方法
最近用写个winform程序想用excel 文件导入数据库中,网上寻求办法,找到了这个经过尝试可以使用. 方法一: 实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环 ...
- Python用pandas获取Excel数据
import pandas as pd df1 = pd.DataFrame(pd.read_excel(r'C:\python测试文件\我的三国啊.xlsx',sheet_name='Sheet1' ...
- Python 利用 BeautifulSoup 爬取网站获取新闻流
0. 引言 介绍下 Python 用 Beautiful Soup 周期性爬取 xxx 网站获取新闻流: 图 1 项目介绍 1. 开发环境 Python: 3.6.3 BeautifulSoup: ...
随机推荐
- 博客代码托管网站个人体会及感受(GitHub、Coding、Netlity、阿里云弹性web托管)
GitHub 免费 部署 github上,服务器在国外,访问速度一般,稳定性比较好,网站知名,操作方便,部署简单,域名不需要备案. Coding 免费 coding 支持 PHP + mysql 的动 ...
- 玩转 PI 系列-如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?
概述 618 买了几个便宜的 Purple PI OH 开发板 (500 块多一点买了 3 个), 这个开发板类似树莓派,是基于 Rockchip(瑞芯微) 的 rx3566 arm64 芯片.如下: ...
- 检测文件的格式——chardet模块
f3 = open(file=path,mode='rb') data = f3.read() # print(data) f3.close() result = chardet.detect(dat ...
- 不要再傻傻分不清 hash、 chunkhash 和 contenthash 啦
hash.contenthash 和 chunkhash 是通过散列函数处理之后,生成的一串字符,可用于区分文件. 文件名不带哈希值 webpack.config.js 文件中,output 中定义输 ...
- dimp V8:[WARNING]login fail, check your username and password, and check the server status
在进行某个项目的性能测试时,我们选择了达梦8作为使用的数据库.因前期的网络安全问题和考虑到节省成本,我们首先在公司本地服务器上搭建了相应的环境,并生成了用于压力测试的业务数据. 然而,在将数据库迁移到 ...
- 分布式存储系统举例剖析(elasticsearch,kafka,redis-cluster)
1. 概述 对于分布式系统,人们首先对现实中的分布式系统进行高层抽象,然后做出各种假设,发展了诸如CAP, FLP 等理论,提出了很多一致性模型,Paxos 是其中最璀璨的明珠.我们对分布式系统的时序 ...
- K8S集群中使用JD KMS服务对敏感数据安全加密
基本概念 KMS,Key Management Service,即密钥管理服务,在K8S集群中,以驱动和插件的形式启用对Secret,Configmap进行加密.以保护敏感数据, 驱动和插件需要使用者 ...
- GitHub Actions CI/CD 工作流实战
1. 什么是 GitHub Actions 与 workflow ? GitHub Actions 是 GitHub 提供的一种持续集成(CI)和持续部署(CD)的工具,用于自动化软件开发过程中的各种 ...
- HarmonyOS扫码服务,应用服务一扫直达打造系统级流量新入口
二维码如今是移动应用流量入口以及功能实现的重要工具,也是各App的流量入口,是物.人.服务的连接器,通过扫码我们可以更便捷的生活,更高效的进行信息交互,包括信息的发布.信息的获取. 在日常扫码过程中, ...
- Vue源码学习(三):<templete>渲染第二步,创建ast语法树
好家伙,书接上回 在上一篇Vue源码学习(二):<templete>渲染第一步,模板解析中,我们完成了模板解析 现在我们继续,将模板解析的转换为ast语法树 1.前情提要 代码已开 ...