在数据处理和管理中,有时候需要将Excel文件中的数据导入到MySQL数据库中进行进一步的分析和操作。本文将介绍如何使用Python编程语言实现这个过程。

导入所需库

import xlrd2  # 导入xlrd2库,用于读取Excel文件
import pymysql # 导入pymysql库,用于连接和操作MySQL数据库
from datetime import datetime # 导入datetime库,用于处理日期和时间

这部分代码导入了xlrd2库用于读取Excel文件,pymysql库用于连接和操作MySQL数据库,以及datetime库用于处理日期和时间。

连接到MySQL数据库

mydb = pymysql.connect(
host="localhost",
user="root",
passwd="123456",
db="test"
)

通过pymysql.connect()函数连接到MySQL数据库。需要提供数据库的主机名、用户名、密码和数据库名称。

打开Excel文件并获取表头

workbook = xlrd2.open_workbook(r'E:\重新开始\Python操作MySQL数据库\sheet1.xlsx')
sheet = workbook.sheet_by_index(0) # 获取第一个工作表 header = [cell.value for cell in sheet.row(0)]

使用xlrd2.open_workbook()函数打开Excel文件,并使用sheet_by_index()方法获取第一个工作表。然后通过sheet.row(0)获取第一行的单元格对象,并使用列表推导式将每个单元格的值添加到header列表中。

创建游标对象

cursor = mydb.cursor()

使用mydb.cursor()方法创建游标对象,用于执行SQL语句。

遍历每一行数据并插入到数据库中

for row_idx in range(1, sheet.nrows):  # 从第二行开始遍历
row_data = []
for cell in sheet.row(row_idx):
if cell.ctype == xlrd2.XL_CELL_DATE:
cell_value = xlrd2.xldate.xldate_as_datetime(cell.value, workbook.datemode)
row_data.append(cell_value.strftime('%Y-%m-%d %H:%M:%S'))
else:
row_data.append(cell.value) sql = f"INSERT INTO yonghu ({', '.join(header)}) VALUES ({', '.join(['%s'] * len(header))})"
cursor.execute(sql, row_data) print(f"正在插入第{row_idx}条数据")

通过for循环遍历Excel文件的每一行数据(从第二行开始)。在内部循环中,判断单元格的数据类型是否为日期类型,如果是,则将其转换为字符串格式并按照指定的格式进行调整;否则,直接将其添加到row_data列表中。

然后,使用', '.join(header)和', '.join(['%s'] * len(header))构建插入数据的SQL语句,其中header为表头的字段名,'%s' * len(header)表示占位符的数量与字段数相同。

最后,使用游标对象的execute()方法执行SQL语句,并传入row_data作为参数,将行数据插入到数据库中。

提交更改并关闭数据库连接

mydb.commit()
cursor.close()
mydb.close()

使用mydb.commit()提交对数据库的更改,并使用cursor.close()关闭游标对象。最后,使用mydb.close()关闭与数据库的连接。

完整代码如下:

import xlrd2  # 导入xlrd2库,用于读取Excel文件
import pymysql # 导入pymysql库,用于连接和操作MySQL数据库
from datetime import datetime # 导入datetime库,用于处理日期和时间 # 连接到MySQL数据库
mydb = pymysql.connect(
host="localhost",
user="root",
passwd="123456",
db="test"
) # 打开Excel文件
workbook = xlrd2.open_workbook(r'E:\重新开始\Python操作MySQL数据库\sheet1.xlsx')
sheet = workbook.sheet_by_index(0) # 获取第一个工作表 # 获取表头(即Excel文件的第一行数据)
header = [cell.value for cell in sheet.row(0)] # 创建游标对象,用于执行SQL语句
cursor = mydb.cursor() # 遍历每一行数据,并将其插入到数据库中
for row_idx in range(1, sheet.nrows): # 从第二行开始遍历
row_data = []
for cell in sheet.row(row_idx):
# 处理时间类型的字段
if cell.ctype == xlrd2.XL_CELL_DATE: # 判断单元格的数据类型是否为日期类型
cell_value = xlrd2.xldate.xldate_as_datetime(cell.value, workbook.datemode)
# 将日期类型转换为字符串格式,并按照指定的格式进行调整
row_data.append(cell_value.strftime('%Y-%m-%d %H:%M:%S'))
else:
row_data.append(cell.value) # 将其他类型的数据直接添加到行数据列表中 # 构建插入数据的SQL语句
sql = f"INSERT INTO yonghu ({', '.join(header)}) VALUES ({', '.join(['%s'] * len(header))})"
# 执行SQL语句,将行数据插入到数据库中
cursor.execute(sql, row_data) # 显示当前正在插入第几条数据
print(f"正在插入第{row_idx}条数据") # 提交更改并关闭数据库连接
mydb.commit()
cursor.close()
mydb.close()

Python使用pymysql和xlrd2将Excel数据导入MySQL数据库的更多相关文章

  1. 将Excel数据导入mysql数据库的几种方法

    将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...

  2. 【MySQL笔记】Excel数据导入Mysql数据库的实现方法——Navicat

    很多公司尤其有点年头的公司,财务业务部门的各种表单都是excel来做的表格,随着互联网的发展各种业务流程都电子化流程化了,再在茫茫多的文档中去查找某一个年份月份的报告是件相当枯燥的事,所以都在想办法将 ...

  3. excel数据导入mySql数据库

    1.将excel数据保存好 2.打开数据库,在表上点击右键,选择导入向导 3.点击下图中红色部门,点击下一步 4.选择excel文件的位置,下方的表空间内,会出现excel中的sheet页,选择要导入 ...

  4. 利用TOAD实现把EXCEL数据导入oracle数据库

    利用TOAD实现把EXCEL数据导入oracle数据库 工具:   Toad11.7z(百度搜索,直接下载) 1.将Excel文件中某些字段导入到Oracle数据库的对应表 连接想要导入的数据库 ,然 ...

  5. Excel连接到MySQL,将Excel数据导入MySql,MySQL for Excel,,

    Excel连接到MySQL 即使当今时代我们拥有了类似微软水晶报表之类的强大报表工具和其他一些灵活的客户管 理应用工具,众多企业在分析诸如销售统计和收入信息的时候,微软的Excel依然是最常用的工具. ...

  6. c#将Excel数据导入到数据库的实现代码

    这篇文章主要介绍了c#将Excel数据导入到数据库的实现代码,有需要的朋友可以参考一下 假如Excel中的数据如下: 数据库建表如下: 其中Id为自增字段: 代码: 代码如下: using Syste ...

  7. java实现EXCEL数据导入到数据库中的格式问题的解决

    之前作为项目甲方,加之java接触不多,在java web开发方面都是打下手的份. 对于EXCEL数据导入到数据库这个问题一直老是出现格式原因而导入失败也是未免惆怅,开发团队也是只说回去检查一下格式. ...

  8. navcat excel数据导入mysql的方法

    navcat excel数据导入mysql的方法 先navcat导出 xls格式 然后把数据复制到往这个xls里 (按照这个xls格式) 然后导入mysql就行了 如果导入的过程无法识别excel里的 ...

  9. NOPI Excel 数据导入到数据库

    /// <summary> /// 上传excel文件 并将文件数据导入到数据库 /// </summary> /// <param name="file&qu ...

  10. 把execel表数据导入mysql数据库

    今天,是我来公司第二周的第一天. 作为新入职的实习生,目前还没适合我的实质项目工作,今天的学习任务是: 把execel表数据导入到mysql数据库,再练习下java操作JDBC. 先了解下execel ...

随机推荐

  1. CF1728A Colored Balls: Revisited题解

    去我的Blog观看 修改时间:2022/9/11修改了格式与标点 修改时间:2022/9/13修改了个别不严谨的语句 题目大意 有 \(n\) 种颜色的球,颜色为 \(i\) 的球为 \(cnt_i\ ...

  2. Flutter系列文章-Flutter环境搭建和Dart基础

    Flutter是Google推出的一个开源的.高性能的移动应用开发框架,可以用一套代码库开发Android和iOS应用.Dart则是Flutter所使用的编程语言.让我们来看看如何搭建Flutter开 ...

  3. Blazor中CSS隔离无法用在子组件内部

    Blazor的CSS隔离是个很好的东西,如图,只需添加一个与Razor组件同名的CSS文件,这个文件中的CSS样式只会在同名的Razor组件中使用. 原理是通过在dom元素添加一个代表标识符的属性 在 ...

  4. Vue报错: Property or method "changeLoginType" is not defined on the instance but referenced during render

    原因 我这里是因为我代码中的方法不存在,我漏写了,后补充上就好了 解决方案 在methods中添加如下代码: // 修改登录状态 changeLoginType(bool){ this.loginTy ...

  5. 王道oj/problem20

    网址:oj.lgwenda.com/problem/20 思路:层次建树,用递归的方法前序遍历 代码: #define _CRT_SECURE_NO_WARNINGS#include <stdi ...

  6. 面霸的自我修养:JMM与锁的理论

    王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 今天是<面霸的自我修养>的第二弹,内容是 Java 并发编程中关于 Java 内存模型(Ja ...

  7. 一文搞懂TCP的三次握手和四次挥手

    目录 1.三次握手 2.四次挥手 3.11种状态名词解析 TCP的三次握手和四次挥手实质就是TCP通信的连接和断开. 三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所 ...

  8. 如何选择最适合您的Excel处理库?

    摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 引言 GcExcel和POI是两个应用于处理Excel文件的技 ...

  9. [golang]标准库-json

    前言 json数据格式通常包含两个操作:序列化(把对象转换成JSON数据类型)和反序列化(把JSON数据类型转换成对象),二者操作互逆. Go语言中相关标准库为encoding/json. 示例代码 ...

  10. c#如何使用WASM跨语言调用?

    介绍Wasm(WebAssembly) WebAssembly(简称Wasm)是一种用于基于堆栈的虚拟机的二进制指令格式.Wasm被设计为编程语言的可移植编译目标,支持在web上部署客户端和服务器应用 ...