Python 利用pymysql和openpyxl操作MySQL数据库并插入Excel数据
1. 需求分析
本文将介绍如何使用Python连接MySQL数据库,并从Excel文件中读取数据,将其插入到MySQL数据库中。
2. 环境准备
在开始本文之前,请确保您已经安装好了以下环境:
- Python 3.x
- PyMySQL库
- openpyxl库
- MySQL数据库
3. 连接MySQL数据库
我们可以使用pymysql库来连接MySQL数据库。请先创建一个名为test的MySQL数据库,并在其中创建一个名为yonghu的表。
import pymysql # 连接到MySQL数据库
mydb = pymysql.connect(
host="localhost",
user="root",
passwd="123456",
db="test"
)
在上述代码中,我们调用了pymysql库中的connect()函数来连接MySQL数据库。其中,host参数是MySQL服务器的主机名或IP地址,user参数是登录MySQL服务器的用户名,passwd参数是登录MySQL服务器的密码,db参数是要连接的数据库名。
4. 打开Excel文件
在Python中,可以使用openpyxl库来读写Excel文件。请先安装好openpyxl库。
from openpyxl import load_workbook # 打开Excel文件
wb = load_workbook(filename=r'E:\重新开始\Python操作MySQL数据库\sheet1.xlsx')
sheet = wb.active
在上述代码中,我们使用load_workbook()函数加载Excel文件,并使用active属性获取活动工作表。
5. 获取表头
在插入数据之前,我们需要先获取Excel表格的表头信息。
# 获取表头
header = [cell.value for cell in sheet[1]]
在上述代码中,我们遍历第一行的单元格,获取每个单元格的值,作为表头。
6. 遍历Excel数据并插入数据库
接下来,我们遍历Excel文件中的每一行数据,并将其插入到MySQL数据库中。
# 遍历每一行数据,并将其插入到数据库中
cursor = mydb.cursor()
count = 0
for row in sheet.iter_rows(min_row=2, values_only=True):
sql = f"INSERT INTO yonghu ({', '.join(header)}) VALUES ({', '.join(['%s'] * len(header))})"
cursor.execute(sql, row)
count += 1
print(f"正在插入{count}条数据") # 提交更改并关闭数据库连接
mydb.commit()
cursor.close()
mydb.close()
在上述代码中,我们使用iter_rows()函数从第二行开始遍历每一行数据。在遍历过程中,我们构建了一个插入数据的SQL语句,使用占位符%s,然后使用游标对象执行SQL语句,将行数据插入到MySQL数据库中。
最后,我们提交了对数据库的更改,并关闭了游标对象和与MySQL数据库的连接。
7. 完整代码
最终的Python代码如下:
from openpyxl import load_workbook # 导入load_workbook函数,用于加载Excel文件
import pymysql # 导入pymysql库,用于连接和操作MySQL数据库 # 连接到MySQL数据库
mydb = pymysql.connect(
host="localhost",
user="root",
passwd="123456",
db="test"
) # 打开Excel文件
wb = load_workbook(filename=r'E:\重新开始\Python操作MySQL数据库\sheet1.xlsx') # 加载Excel文件
sheet = wb.active # 获取活动工作表 # 获取表头
header = [cell.value for cell in sheet[1]] # 获取第一行的单元格值,作为表头 # 遍历每一行数据,并将其插入到数据库中
cursor = mydb.cursor() # 创建游标对象,用于执行SQL语句
count = 0 # 计数器,用于记录插入的数据条数
for row in sheet.iter_rows(min_row=2, values_only=True): # 从第二行开始遍历每一行数据
sql = f"INSERT INTO yonghu ({', '.join(header)}) VALUES ({', '.join(['%s'] * len(header))})"
# 构建插入数据的SQL语句,使用占位符%s
cursor.execute(sql, row) # 执行SQL语句,将行数据插入到数据库中
count += 1 # 每插入一条数据,计数器加1
print(f"正在插入{count}条数据") # 输出插入的数据条数 # 提交更改并关闭数据库连接
mydb.commit() # 提交对数据库的更改
cursor.close() # 关闭游标对象
mydb.close() # 关闭与数据库的连接
8. 总结
本文介绍了如何使用Python连接MySQL数据库,并从Excel文件中读取数据,将其插入到MySQL数据库中。如果您有任何疑问或建议,请在评论区留言。
Python 利用pymysql和openpyxl操作MySQL数据库并插入Excel数据的更多相关文章
- PHP操作mysql数据库:[2]查询数据听语音
本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料 Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言 ...
- python模块----pymysql模块 (连接MySQL数据库)
pymysql模块是专门用来连接mysql数据库的模块,是非标准库模块,需要pip下载 下载 pip install pymysql 查询 import pymysql # 打开数据库连接 db = ...
- java操作MySQL数据库(插入、删除、修改、查询、获取所有行数)
插播一段广告哈:我之前共享了两个自己写的小应用,见这篇博客百度地图开发的两个应用源码共享(Android版),没 想到有人找我来做毕设了,年前交付,时间不是很紧,大概了解了下就接下了,主要用到的就是和 ...
- 树莓派开发笔记(十七):树莓派4B+上Qt多用户连接操作Mysql数据库同步(单条数据悲观锁)
前言 安装了mysq数据库,最终时为了实现在一个树莓派上实现多用户多进程操作的同步问题,避免数据并发出现一些错误,本篇安装了远程服务并且讲述了使用Qt进行悲观锁for update操作,命令行进行 ...
- pymysql连接和操作Mysql数据库
pymysql 一.概要 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库, 二.PyMySQL 安装 pip install pymysql 三.操作流程 创建c ...
- mysql数据库表插入单条数据/批量插入数据
1.创建表格 reate table trade( id int(4) not null primary key auto_increment, product varchar(30) null, p ...
- python3操作MySQL数据库
安装PyMySQL 下载地址:https://pypi.python.org/pypi/PyMySQL 1.把操作Mysql数据库封装成类,数据库和表先建好 import pymysql.cursor ...
- golang利用beego框架orm操作mysql
GO引入orm框架操作mysql 在beego框架中引入orm操作mysql需要进行的步骤: 第一步:导入orm框架依赖,导入mysql数据库的驱动依赖 import ( "github.c ...
- Java程序向MySql数据库中插入的中文数据变成了问号
找到mysql的安装目录,修改my.ini文件 (1)如何找到my.ini文件 如果my.ini文件不在MySQL的安装目录下,可能放在隐藏目录,要先去找到ProgramData,(这里要先打开显示隐 ...
- 利用Python操作MySQL数据库
前言 在工作中,我们需要经常对数据库进行操作,比如 Oracle.MySQL.SQL Sever 等,今天我们就学习如何利用Python来操作 MySQL 数据库. 本人环境:Python 3.7.0 ...
随机推荐
- 图像处理_ISP_坏点矫正
1 坏点介绍 图像坏点(Bad pixel) : 图像传感器上光线采集点(像素点)所形成的阵列存在工艺上的缺陷,或光信号进行转化为电信号的过程中出现错误,从而会造成图像上像素信息错误,导致图像中的像素 ...
- 分享我的 Shell 环境,git 操作效率提升 100% !
每当我换到一个新的开发环境,蛮多东西要折腾的.比如 git.golang.环境变量等等.所以特地整理了一下,下次换新电脑也方便. 本文分享我在工作中常用的环境变量 + Shell alias:比如 ...
- 用windows脚本命令netsh快速启用、禁用网络
用windows脚本命令netsh快速启用.禁用网络 不知道你有没有这种需求:公司单位里的网络是内网,有时需要连接手机热点wifi网络,这时就需要先禁用内网网卡,启用无线网卡.连接内网的时候又需要先禁 ...
- 使用guestmount更改qcow2镜像内容
参考: 使用guestmount更改qcow2镜像内容 guestmount 安装 yum install libguestfs libguestfs-tools -y 使用 guestmount - ...
- 一条命令突破Windows限制,暂定更新时间至3000天
在系统界面上最长也就只能延期 35 天,而且 35 天以后一定要更新了才能继续暂停.不过,我找到了一段能延长暂停时间的代码 reg add "HKEY_LOCAL_MACHINE\SOFTW ...
- quarkus数据库篇之三:单应用同时操作多个数据库
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 一个应用同时连接多个数据库进行操作,这是常见 ...
- 如何找到docker容器中的网卡外联的veth pair的另一张网卡
1.概述 在Docker容器中,每个容器都有一个或多个网络接口(网卡),用于连接容器内部与宿主机或其他容器进行通信.这些网络接口中的一些可能是veth pair,也就是虚拟以太网对,它们以成对的方式存 ...
- 6、Mybatis之高级查询
6.1.创建接口.映射文件和测试类 ++++++++++++++++++++++++++分割线++++++++++++++++++++++++++ 注意namespace属性值为对应接口的全限定类名 ...
- AI绘画StableDiffusion美女实操教程:斗破苍穹-小医仙
之前分享过StableDiffusion的入门到精通教程:AI绘画:Stable Diffusion 终极炼丹宝典:从入门到精通 但是还有人就问:安装是安装好了,可是为什么生成的图片和你生成的图片差距 ...
- AI绘画:StableDiffusion炼丹Lora攻略-实战萌宠图片生成
写在前面的话 近期在小红书发现了许多极其可爱.美观的萌宠图片,对这些美妙的图像深深着迷 于是想着看看利用AI绘画StableDiffusion以下简称(SD)做出来. 以下是详细实操的全过程,包括所有 ...