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: ...
随机推荐
- Java使用qq邮箱发送邮件(可做验证码使用)
pom.xml中导入发邮件需要的jar包 <!-- 邮箱 --> <dependency> <groupId>javax.mail</groupId> ...
- 即构SDK新增焦点语音功能,可实现特定用户语音的聚焦
2021年,即构SDK每月迭代如期而至.今年,我们会着重介绍每月SDK的重要新增功能,让大家更清晰的了解到这些新功能的特性及应用场景. 重点新增功能 多人语音通话场景下的焦点语音功能 功能介绍 即构S ...
- ObjectInputStream_报错问题
报错: Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: CE ...
- 【转载】Linux虚拟化KVM-Qemu分析(九)之virtio设备
原文信息 作者:LoyenWang 出处:https://www.cnblogs.com/LoyenWang/ 公众号:LoyenWang 版权:本文版权归作者和博客园共有 转载:欢迎转载,但未经作者 ...
- vue+element 判断table表格输入不能为空
点击确定的时候,判断表格其中某行某值不能为空 1.HTML <div class="app-container"> <el-form ref="form ...
- 我真的,AI框架的编程范式怎么理解?
我给领导汇报AI框架用函数式编程好,没讲明白,说函数式就是写函数那样方便,都被领导吊飞了,啥玩意,写啥不是写函数,狗屁不通! 网上搜说用tensorflow那就是用声明式编程,用pytorch就是命令 ...
- shell 并发
#!/bin/bash # 设置并发数 thread_num=3 # 创建管道文件 FIFO=/tmp/$$-FIFO mkfifo $FIFO # 使用句柄打开管道文件 exec 1000<& ...
- Vue错误:Cannot read properties of undefined (reading '$router')
解决方案 这是由于this的指向有问题,我们只需要重新声明一下this就可以重新调用了
- 带你快速上手HetuEngine
本文分享自华为云社区<[手把手带你玩转HetuEngine](一)HetuEngine快速上手>,作者:HetuEngine九级代言. HetuEngine是什么 HetuEngine是华 ...
- 银河麒麟SP2 auditd服务内存泄露问题
这几天遇到基于海光服务器的银河麒麟V10 SP2版本操作系统出现内存无故增长问题. 排查发现auditd服务,占用了大量内存. 我的环境是银河麒麟V10 SP2 524,audit版本audit-3. ...