首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python读取Excel文件并写入数据库

Python读取Excel文件并写入数据库

作者头像
Python之道
发布于 2020-04-10 08:00:18
发布于 2020-04-10 08:00:18
4.6K00
代码可运行
举报
文章被收录于专栏:程序员八阿哥程序员八阿哥
运行总次数:0
代码可运行

好方法

Python利用pandas处理Excel数据的应用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化测试的时候,如果涉及到数据的读取和存储,那么而利用pandas就会非常高效,基本上3行代码可以搞定你20行代码的操作!该教程仅仅限于结合柠檬班的全栈自动化测试课程来讲解下pandas在项目中的应用,这仅仅只是冰山一角,希望大家可以踊跃的去尝试和探索!

一、安装环境:

[

复制代码

](javascript:void(0); "复制代码")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;"> 1:pandas依赖处理Excel的xlrd模块,所以我们需要提前安装这个,安装命令是:pip install xlrd 2:安装pandas模块还需要一定的编码环境,所以我们自己在安装的时候,确保你的电脑有这些环境:Net.4 、VC-Compiler以及winsdk_web,如果大家没有这些软件~可以咨询我们的辅导员索要相关安装工具。 3:步骤1和2 准备好了之后,我们就可以开始安装pandas了,安装命令是:pip install pandas

一切准备就绪,就可以开始愉快的玩耍咯! ps:在这个过程中,可能会遇到安装不顺利的情况,万能的度娘有N种解决方案,你这么大应该要学着自己解决问题。</pre>

[

复制代码

](javascript:void(0); "复制代码")

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   二、pandas操作Excel表单

数据准备,有一个Excel文件:lemon.xlsx有两个表单,表单名分别为:Python 以及student,

Python的表单数据如下所示:

image

student的表单数据如下所示:

image

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   1:在利用pandas模块进行操作前,可以先引入这个模块,如下:

  2:读取Excel文件的两种方式:

方法一:默认读取第一个表单 df=pd.read_excel('lemon.xlsx')#这个会直接默认读取到这个Excel的第一个表单 data=df.head()#默认读取前5行的数据 print("获取到所有的值:\n{0}".format(data))#格式化输出</pre>

得到的结果是一个二维矩阵,如下所示:

image

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">#方法二:通过指定表单名的方式来读取 df=pd.read_excel('lemon.xlsx',sheet_name='student')#可以通过sheet_name来指定读取的表单 data=df.head()#默认读取前5行的数据 print("获取到所有的值:\n{0}".format(data))#格式化输出</pre>

得到的结果如下所示,也是一个二维矩阵:

image

[

复制代码

](javascript:void(0); "复制代码")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">#方法三:通过表单索引来指定要访问的表单,0表示第一个表单 #也可以采用表单名和索引的双重方式来定位表单 #也可以同时定位多个表单,方式都罗列如下所示 df=pd.read_excel('lemon.xlsx',sheet_name=['python','student'])#可以通过表单名同时指定多个 # df=pd.read_excel('lemon.xlsx',sheet_name=0)#可以通过表单索引来指定读取的表单 # df=pd.read_excel('lemon.xlsx',sheet_name=['python',1])#可以混合的方式来指定 # df=pd.read_excel('lemon.xlsx',sheet_name=[1,2])#可以通过索引 同时指定多个 data=df.values#获取所有的数据,注意这里不能用head()方法哦~ print("获取到所有的值:\n{0}".format(data))#格式化输出</pre>

[

复制代码

](javascript:void(0); "复制代码")

具体结果是怎样的,同学们可以自己一个一个的去尝试,这个结果是非常有意思的,但是同时同学们也发现了,这个数据是一个二维矩阵,对于我们去做自动化测试,并不能很顺利的处理,所以接下来,我们就会详细的讲解,如何来读取行号和列号以及每一行的内容 以及制定行列的内容。

三、pandas操作Excel的行列

1:读取指定的单行,数据会存在列表里面

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">#1:读取指定行 df=pd.read_excel('lemon.xlsx')#这个会直接默认读取到这个Excel的第一个表单 data=df.ix[0].values#0表示第一行 这里读取数据并不包含表头,要注意哦! print("读取指定行的数据:\n{0}".format(data))</pre>

得到的结果如下所示:

image

2:读取指定的多行,数据会存在嵌套的列表里面:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') data=df.ix[[1,2]].values#读取指定多行的话,就要在ix[]里面嵌套列表指定行数 print("读取指定行的数据:\n{0}".format(data))</pre>

3:读取指定的行列:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') data=df.ix[1,2]#读取第一行第二列的值,这里不需要嵌套列表 print("读取指定行的数据:\n{0}".format(data))</pre>

4:读取指定的多行多列值:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') data=df.ix[[1,2],['title','data']].values#读取第一行第二行的title以及data列的值,这里需要嵌套列表 print("读取指定行的数据:\n{0}".format(data))</pre>

5:获取所有行的指定列

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') data=df.ix[:,['title','data']].values#读所有行的title以及data列的值,这里需要嵌套列表 print("读取指定行的数据:\n{0}".format(data))</pre>

6:获取行号并打印输出

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') print("输出行号列表",df.index.values)

输出结果是: 输出行号列表 [0 1 2 3]</pre>

7:获取列名并打印输出

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') print("输出列标题",df.columns.values)

运行结果如下所示: 输出列标题 ['case_id' 'title' 'data']</pre>

8:获取指定行数的值:

[

复制代码

](javascript:void(0); "复制代码")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') print("输出值",df.sample(3).values)#这个方法类似于head()方法以及df.values方法

输出值 [[2 '输入错误的密码' '{"mobilephone":"18688773467","pwd":"12345678"}'] [3 '正常充值' '{"mobilephone":"18688773467","amount":"1000"}'] [1 '正常登录' '{"mobilephone":"18688773467","pwd":"123456"}']]</pre>

[

复制代码

](javascript:void(0); "复制代码")

9:获取指定列的值:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') print("输出值\n",df['data'].values)</pre>

四:pandas处理Excel数据成为字典

我们有这样的数据,

image

,处理成列表嵌套字典,且字典的key为表头名。

实现的代码如下所示:

[

复制代码

](javascript:void(0); "复制代码")

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">df=pd.read_excel('lemon.xlsx') test_data=[] for i in df.index.values:#获取行号的索引,并对其进行遍历: #根据i来获取每一行指定的数据 并利用to_dict转成字典 row_data=df.ix[i,['case_id','module','title','http_method','url','data','expected']].to_dict() test_data.append(row_data) print("最终获取到的数据是:{0}".format(test_data))</pre>

[

复制代码

](javascript:void(0); "复制代码")

最后得到的结果是:

<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">最终获取到的数据是: [{'title': '正常登录', 'case_id': 1, 'data': '{"mobilephone":"18688773467","pwd":"123456"}'}, {'title': '输入错误的密码', 'case_id': 2, 'data': '{"mobilephone":"18688773467","pwd":"12345678"}'}, {'title': '正常充值', 'case_id': 3, 'data': '{"mobilephone":"18688773467","amount":"1000"}'}, {'title': '充值输入负数', 'case_id': 4, 'data': '{"mobilephone":"18688773467","amount":"-100"}'}]</pre>

关于pandas的学习,今天就告一段落啦!赶紧打开pycharm跑起来!!!

import pandas as pd from sqlalchemy import create_engine

file = r"line6.xlsx" df = pd.read_excel(file) print(df)

engine = create_engine("mysql+pymysql://root:mysql@127.0.0.1:3306/excel?charset=utf8")

df.to_sql('testexcel',con=engine,if_exists='replace',index=False)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
flask flask-login使用笔记(flask 55)
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">pip install flask_login</pre>
用户5760343
2019/08/15
1.6K0
flask flask-login使用笔记(flask 55)
python asyncio异步http(并行编程 30)
前言:python由于GIL(全局锁)的存在,不能发挥多核的优势,其性能一直饱受诟病。然而在IO密集型的网络编程里,异步处理比同步处理能提升成百上千倍的效率,弥补了python性能方面的短板,如最新的微服务框架japronto,resquests per second可达百万级。
用户5760343
2019/07/30
1.2K0
python asyncio异步http(并行编程 30)
python swig 调用C/C++接口
当你觉得python慢的时候,当你的c/c++代码难以用在python上的时候,你可能会注意这篇文章。swig是一个可以把c/c++代码封装为python库的工具。(本文封装为python3的库)
用户5760343
2022/05/13
9470
bootstrap 自动补全插件Bootstrap Typeahead 组件
Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,功能很强大,但是,使用上并不太方便。这里我们将介绍一下这个组件的使用。
用户5760343
2019/10/14
3.3K0
bootstrap 自动补全插件Bootstrap Typeahead 组件
Docker 日志切割参考
===============================================
用户5760343
2019/11/05
2K0
Docker 日志切割参考
python metaclass ..
关于Python2.x中metaclass这一黑科技,我原以为我是懂的,只有当被打脸的时候,我才认识到自己too young too simple sometimes native。
用户5760343
2019/12/13
6430
python metaclass ..
python之crawlspider初探
<pre style="margin: 0px; padding: 0px; white-space: pre-wrap; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">""" 1、用命令创建一个crawlspider的模板:scrapy genspider -t crawl <爬虫名> <all_domain>,也可以手动创建 2、CrawlSpider中不能再有以parse为名字的数据提取方法,这个方法被CrawlSpider用来实现基础url提取等功能 3、一个Rule对象接受很多参数,首先第一个是包含url规则的LinkExtractor对象, 常有的还有callback(制定满足规则的解析函数的字符串)和follow(response中提取的链接是否需要跟进) 4、不指定callback函数的请求下,如果follow为True,满足rule的url还会继续被请求 5、如果多个Rule都满足某一个url,会从rules中选择第一个满足的进行操作 """</pre>
用户5760343
2019/08/02
5340
python之crawlspider初探
python docx
https://blog.csdn.net/sinat_37005367/article/details/77855359
用户5760343
2022/05/14
5940
python docx
Zookeeper 安装
ZooKeeper服务器是用Java创建的,它在JVM上运行。你需要使用JDK 6或更高版本。
用户5760343
2019/10/25
6080
浅谈缓存写法(一):缓存的雪崩和穿透
为了方便演示,这里使用Runtime.Cache做缓存容器,并定义个简单操作类。如下:
Java_老男孩
2019/06/28
4390
dstat用法
监控CPU\MEN: dstat --top-mem --top-io --top-cpu 常用常规监控:dstat -cmsdnl -D sda1 -N lo,ens33 100 5
用户5760343
2022/05/23
5890
dstat用法
bootstrap 中的 less
Bootstrap 的 CSS 文件是通过 Less 源码编译而来的。Less 是一门预处理语言,支持变量、mixin、函数等额外功能。
用户5760343
2019/07/05
1K0
浅谈分布式计算的开发与实现(二)
接上篇,离线计算是对已经入库的数据进行计算,在查询时对批量数据进行检索、磁盘读取展示。 而实时计算是在数据产生时就对其进行计算,然后实时展示结果,一般是秒级。 举个例子来说,如果有个大型网站,要实时统计用户的搜索内容,这样就能计算出热点新闻及突发事件了。 按照以前离线计算的做法是不能满足的,需要使用到实时计算。
Java_老男孩
2019/07/02
4860
浅谈分布式计算的开发与实现(二)
修改WordPress邮件通知样式
作者:matrix 被围观: 1,694 次 发布时间:2013-12-10 分类:Wordpress 兼容并蓄 | 8 条评论 »
HHTjim 部落格
2022/09/26
1K0
修改WordPress邮件通知样式
2018-09-11 Svn升级Git不需要那么痛URL that points to a project root(may be the same as Subversion repository
一. 介绍 SubGit是用java语言编写的。SubGit是一种subversion与git代码库之间双向同步工具。如何在本地subversion版本库上安装SubGit请参考下片文章。本片文章主要说明使用SubGit创建git镜像远程subversion版本库。
Albert陈凯
2018/09/20
1K0
2018-09-11 Svn升级Git不需要那么痛URL that points to a project root(may be the same as Subversion repository
用10行Python代码,实现AI目标检测技术!(Python是最好的语言)
今天为大家带来的内容是,用10行Python代码,实现AI目标检测技术!(Python是最好的语言),本文具有不错的参考意义,希望能够帮助到你!
用户6133654
2019/10/10
8140
用10行Python代码,实现AI目标检测技术!(Python是最好的语言)
python re
转载:https://www.runoob.com/python/python-reg-expressions.html
用户5760343
2019/11/11
9590
python 内存映射二进制文件
使用 mmap 模块来内存映射文件。 下面是一个工具函数,向你演示了如何打开一个文件并以一种便捷方式内存映射这个文件。
用户5760343
2019/10/21
9540
MyBatis Generator 用法详解 XML配置详解 3. <generatorConfiguration>的子元素MyBatis Generator中文文档
MBG全部指代MyBatis Generator MyBatis Generator 1.3.4 扩展,可以设置 Mapper(Dao)后缀 运行MyBatis Generator 有4种运行MBG的方法,具体请看文档 运行 MyBatis Generator MBG下载地址: http://repo1.maven.org/maven2/org/mybatis/generator/mybatis-generator-core/ XML配置详解 在MBG中,最主要也最重要的就是XML配置文件,因
JavaEdge
2018/05/16
2.1K0
Linux logrotate 详细
志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题。除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事。
用户5760343
2019/10/30
8180
Linux logrotate 详细
相关推荐
flask flask-login使用笔记(flask 55)
更多 >
领券
一站式MCP教程库,解锁AI应用新玩法
涵盖代码开发、场景应用、自动测试全流程,助你从零构建专属AI助手
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档