Python读取excel文件数据并插入数据库[通俗易懂]

Python读取excel文件数据并插入数据库[通俗易懂]目的:将excel文件StudentInfo.xls的学生信息插入到test库中的student表中一、连接mysql数据库安装第三方库pymysql:pipinstallpymysql调用pymysql.connect()方法连接数据库,代码如下importpymysql#打开数据库连接conn=pymysql.connect(host=’localhost’,#MySQL服务器地址user=’root’,#MySQL服务器端口号p

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

例子: 将excel文件StudentInfo.xls的学生信息插入到student表中

在这里插入图片描述
注: 使用的版本:Python3.7,MySQL5.5

一、连接mysql数据

  1. 安装第三方库pymysql:pip install pymysql(Python2中则使用mysqldb)
  2. 调用pymysql.connect()方法连接数据库,代码如下
import pymysql

# 打开数据库连接
conn = pymysql.connect(
    host='localhost',  # MySQL服务器地址
    user='root',  # MySQL服务器端口号
    password='root',  # 用户名
    charset='utf8',  # 密码
    port=3308,  # 端口
    db='test',  # 数据库名称
)

# 使用cursor()方法获取操作游标
c = conn.cursor()
sql = "show databases"
# 使用execute方法执行SQL语句
c.execute(sql)
# 使用 fetchone() 方法获取一条数据
res = c.fetchone()
print(res)
# 关闭数据库连接
conn.close()

3.运行程序,如果控制台没有报错,且能正常执行sql语句,则代表连接数据库成功;

在这里插入图片描述

  1. 连接数据库成功后,先插入一条数据看看效果 ?
# 使用cursor()方法获取操作游标
c = conn.cursor()
sql = "insert into student(Sno,Sname,Ssex,Sage,Sdept) value ('2012151','刚子','男','29','CS')"
# 使用execute方法执行SQL语句
c.execute(sql)
# 插入数据,需执行conn.commit()
conn.commit()
# 关闭数据库连接
conn.close()

注:使用pymysql操作数据库时,增删改与查询是有区别的,在增删改操作时一定要记得conn.commit(),提交当前事务。

在这里插入图片描述

二、读取excel文件

  1. 读取excel文件需要用到xlrd库,安装方法:pip install xlrd
  2. 对excel文件中的数据进行读取 ?
import xlrd

FilePath = 'E:/PDBC/StudentInfo.xls'

# 1.打开excel文件
wkb = xlrd.open_workbook(FilePath)
# 2.获取sheet
sheet = wkb.sheet_by_index(0)  # 获取第一个sheet表['学生信息']
# 3.获取总行数
rows_number = sheet.nrows
# 4.遍历sheet表中所有行的数据,并保存至一个空列表cap[]
cap = []
for i in range(rows_number):
    x = sheet.row_values(i)  # 获取第i行的值(从0开始算起)
    cap.append(x)
print(cap)

在这里插入图片描述

  1. 上面读取到的结果为列表类型,每个小列表代表一个学生的信息。因为student表中有五个字段,分别是:Sno、Sname、Ssex、Sage、Sdept,所以我们要拿到每个学生的这五个属性值 ?
for Stu in cap:
    Sno = int(Stu[0])
    Sname = Stu[1]
    Ssex = Stu[2]
    Sage = Stu[3]
    Sdept = Stu[4]
    print(Sno, Sname, Ssex, Sage, Sdept)

在这里插入图片描述
三、批量插入数据库

获取到每个学生的属性值后,就可以逐个插入到数据中了,总代码如下

import pymysql
import xlrd

"""
一、连接mysql数据库
"""
# 打开数据库连接
conn = pymysql.connect(
    host='localhost',  # MySQL服务器地址
    user='root',  # MySQL服务器端口号
    password='root',  # 用户名
    charset='utf8',  # 密码
    port=3308,  # 端口
    db='test',  # 数据库名称
)

# 使用cursor()方法获取操作游标
c = conn.cursor()

"""
二、读取excel文件
"""
FilePath = 'E:/PDBC/StudentInfo.xls'

# 1.打开excel文件
wkb = xlrd.open_workbook(FilePath)
# 2.获取sheet
sheet = wkb.sheet_by_index(0)  # 获取第一个sheet表['学生信息']
# 3.获取总行数
rows_number = sheet.nrows
# 4.遍历sheet表中所有行的数据,并保存至一个空列表cap[]
cap = []
for i in range(rows_number):
    x = sheet.row_values(i)  # 获取第i行的值(从0开始算起)
    cap.append(x)
print(cap)  # [['9022478', '郭赛', '男', 34.0, 'CS'], ['9022472', '林伟', '男', 36.0, 'MA'], ···]

"""
三、将读取到的数据批量插入数据库
"""
for Stu in cap:
    Sno = int(Stu[0])
    Sname = Stu[1]
    Ssex = Stu[2]
    Sage = Stu[3]
    Sdept = Stu[4]
    # 使用f-string格式化字符串,对sql进行赋值
    c.execute(f"insert into student(Sno,Sname,Ssex,Sage,Sdept) value ('{Sno}','{Sname}','{Ssex}','{Sage}','{Sdept}')")   
conn.commit()
conn.close()
print("插入数据完成!")

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/188605.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 清北学堂模拟赛d3t6 c

    清北学堂模拟赛d3t6 c分析:比较神奇的一道题.要把树变成环肯定要先变成链,然后把链给拼接成环.接下来考虑一个脑洞大开的树形dp:设f[i][0]表示i不与父节点相连的链数,f[i][1]表示i与父节点相连的链数,先考虑怎么

  • 开发报错记录解决(一):AttributeError: module ‘pywt‘ has no attribute ‘wavedec2‘

    开发报错记录解决(一):AttributeError: module ‘pywt‘ has no attribute ‘wavedec2‘当遇到类似module‘pywt’hasnoattribute‘wavedec’之类的错误的时候.例如:AttributeError:module’pywt’hasnoattribute’wavedec2’按下面的步骤走一遍就可以:步骤:1、打开cmd终端或Anaconda3终端。2、输入pipuninstallpywt。3、输入pipinstallPyWavelets。问题解决。…

  • wireshark抓包教程详解[通俗易懂]

    wireshark抓包教程详解[通俗易懂]wireshark抓包新手使用教程Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括:1、Wireshark软件下载和安装以及Wireshark主界面介绍。2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。3、Wireshark过滤器使用。过滤器包含两种类型,一种是抓包过滤器,就是抓取前设置过滤规则。另外一种是显示过滤器,就是在数据包分析时进行过…

  • 匹配电子邮箱的正则表达式_怎样设置电子邮箱

    匹配电子邮箱的正则表达式_怎样设置电子邮箱电子邮件格式  电子邮件地址的格式是域内部分@域,其中域内部分最长为64个字符,而域名最长可达255个字符。例如:name@domainname可以使用任意ASCII字符:大小写英文字母a-z,A-Z数字0-9name部分只允许输入‘-’、’_’、’.’。原则上字符  !#$%&’*±/=?^`{|}~  甚至空格都可以输入,但是有些邮件服务器会拒绝包含有特殊字符的邮件地址一般来说只允许输入‘-’、’_’、’.’这三个特殊符号字符‘.’不能

  • 魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程

    魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程魔百盒CM211-2系列(ZG/CH/YS)海思MV300H/310芯片-刷机固件及教程固件说明:1、魔百盒CM211-2-全系列-海思Hi3798MV300H/310-通用NAND和EMMC卡刷固件,支持红外蓝牙遥控,支持常见多种无线,同时支持RTL8822BS、RTL8822CS、MT7661、MT7663、MT7668等无线;2、解除官方屏蔽无线功能,有线和无线正常使用;3、代工标识说明:一般没标识是朝歌代工,带有ZG字母的就是朝歌代工,带有CH字母的就是长虹代工,带有YS或YST字

  • virsh 关机_KVM virsh常用命令篇「建议收藏」

    virsh 关机_KVM virsh常用命令篇「建议收藏」1、查看运行的虚拟机virshlist2、查看所有的虚拟机(关闭和运行的虚拟机)virshlist–all3、连接虚拟机virshconsole+域名(虚拟机的名称)4、退出虚拟机ctrl+]5、关闭虚拟机5.1、virshshutdown+域名这个时候我在virshlist发现test02这个虚拟机还是在运行的,并没有关闭。我们需要安装一个acpid的服务并启动它,什么是AC…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号