openpyxl模块的读写使用及mongodb概念
今日内容概要
- openpyxl模块
- MongoDB数据库
今日内容详细
openpyxl模块
# 下载
pip3 install openpyxl
# 使用
'''openpyxl内部读写也是分离的 需要你调用不同的方法才能完成'''
from openpyxl import Workbook
# 导入工作簿
# 生成一个工作簿对象
wb = Workbook()
# 利用该工作簿对象即可操作excel表格
# wb1 = wb.create_sheet('哈哈') # 在excel文件内新建一个哈哈的工作表
wb1 = wb.create_sheet('哈哈',0) # 在excel文件内新建一个哈哈的工作表
# 后面的数字用来指定创建的工作表在excel文件内的位置
# wb1.title = '嘿嘿嘿' # 还可以通过title属性修改工作表的名称
# 1.通过代码操作excel单元格需要使用坐标
wb1['A3'] = 666
# 2.还可以通过关键字的形式 明确行和列 cell是单元格的意思
wb1.cell(row=3,column=4,value=999) # row是行 column是列 value是数据
wb1['A4'] = 123
wb1['A5'] = 321
wb1['A6'] = '=sum(A4:A5)'
# 保存excel文件
wb.save('我的第一个excel文件.xlsx')
# 进阶操作
from openpyxl import Workbook
wb = Workbook()
wb1 = wb.create_sheet('test',0)
# 表格肯定有表头和表单
"""
表头就是excel表格的列名称
表单就是excel表格的行数据
"""
# 直接使用append添加列表数据 列表里面的元素都会在一行展示出来
wb1.append(['用户名','年龄','性别','手机号'])
# 表单数据的添加 append一次就是一行
wb1.append(['jason',18,'男',110])
wb1.append(['egon',73,'男',120])
wb1.append(['frank',84,'男',130])
wb1.append(['tony',32,'男',140])
# 少录一列数据
# wb1.append(['tony','男',140]) # 直接前移
# 缺失数据
wb1.append(['kevin','','男',140]) # 支持录入空数据
wb.save('111.xlsx')
# 读操作
from openpyxl import load_workbook
wb = load_workbook('111.xlsx')
# 获取到excel表格中所有的工作表名称
# print(wb.sheetnames) # 结果是一个列表 ['test', 'Sheet']
# 指定你要获取的工作表
# wb1 = wb['哈哈']
wb1 = wb['test'] # 获取test工作表 wb1就指代test工作表
# 获取数据 统一都需要.value才可以获取到
# res = wb1['A4'].value # 获取A2单元格里面的数据
# print(res)
# 获取公式单元格数据 获取到的是公式而不是结果
# res1 = wb1['A6'].value
# print(res1) # =sum(A4:A5)
# 获取数据的第二种方式
# res2 = wb1.cell(row=3,column=4).value
# print(res2)
# 在读取excel表格数据之前 我们通常先查看当前excel表格有几行几列数据
print(wb1.max_row) # 6行
print(wb1.max_column) # 4列
# print(wb1.rows) # <generator object Worksheet._cells_by_row at 0x0000017E63683F10>
# for row in wb1.rows:
# # print(row) # (<Cell 'test'.A1>, <Cell 'test'.B1>, <Cell 'test'.C1>, <Cell 'test'.D1>)
# # 对数据行对象进行for循环获取一个个单元格的数据
# for data in row:
# print(data.value)
# print(wb1.columns)
# for column in wb1.columns:
# # print(column)
# for data in column:
# print(data.value)
"""
generator
只要你看到generator关键字 说明这个东西可以被for循环
"""
官方文档
https://pypi.org/project/openpyxl/ # 官网
https://openpyxl.readthedocs.io/en/stable/ # 详细的文档
https://openpyxl.readthedocs.io/en/stable/tutorial.html # 详细的教程
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.active # 不创建新的工作表 直接用第一个sheet
# ws2 = wb.create_sheet() # 再创建新的工作表
ws1.title = '主表'
ws1['A1'] = '求求你们用点心 好好学!'
ws1.sheet_properties.tabColor = "FF2DE00F"
target = wb.copy_worksheet(ws1)
# res = ws1['A1:C6'] # 依次获取每个单元格里面的数据
# for t in res:
# for data in t:
# print(data.value)
res = ws1[1:5]
print(res)
"""
取色
1.利用微信或者qq截图下面有颜色代码
2.利用pycharm提供的取色器
"""
# wb.save('333.xlsx')
"""
save 如果不执行 那么上述所有的操作都是在内存中进行的
"""
MongoDB数据库
# 参考文档:https://www.cnblogs.com/xiaoyuanqujing/articles/11805775.html
关系型数据库
MySQL、oracle、acess、postgresql、db2、sqlite
非关系型数据库
redis、mongodb、memcache
MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库
1.易用性
数据操作更加的简单方便扩展性更高
采取的是类似于key:value的形式存储数据
2.易扩展
MongoDB支持横向扩展
# 纵向扩展和横向扩展的含义
应用程序数据集的大小正在以不可思议的速度增长。随着可用带宽的增长和存储器价格的下降,即使是一个小规模的应用程序,需要存储的数据量也可能大的惊人,甚至超出
了很多数据库的处理能力。过去非常罕见的T级数据,现在已经是司空见惯了。
由于需要存储的数据量不断增长,开发者面临一个问题:应该如何扩展数据库,分为纵向扩展和横向扩展,纵向扩展是最省力的做法,但缺点是大型机一般都非常贵,而且
当数据量达到机器的物理极限时,花再多的钱也买不到更强的机器了,此时选择横向扩展更为合适,但横向扩展带来的另外一个问题就是需要管理的机器太多。
MongoDB的设计采用横向扩展。面向文档的数据模型使它能很容易地在多台服务器之间进行数据分割。MongoDB能够自动处理跨集群的数据和负载,自动重新分配文档,以及将
用户的请求路由到正确的机器上。这样,开发者能够集中精力编写应用程序,而不需要考虑如何扩展的问题。如果一个集群需要更大的容量,只需要向集群添加新服务器,MongoDB就会自动将现有的数据向新服务器传送
3.丰富的功能
1.索引(类似于书的目录用于加快查询速度)
2.聚合
3.特殊的集合类型
4.文件存储
4.卓越的性能
MongoDB的一个主要目标是提供卓越的性能,这很大程度上决定了MongoDB的设计。MongoDB把尽可能多的内存用作缓存cache,视图为每次查询自动选择正确的索引。
总之各方面的设计都旨在保持它的高性能
虽然MongoDB非常强大并试图保留关系型数据库的很多特性,但它并不追求具备关系型数据库的所有功能。只要有可能,数据库服务器就会将处理逻辑交给客户端。这种精简方式的设计是MongoDB能够实现如此高性能的原因之一
"""
MongoDB是唯一一款看上去像关系型数据库的非关系数据库
"""
MongoDB重要概念
MySQL MongoDB 结束
database database 数据库
table collection 数据表/集合
row document 数据行/文档
column field 列字段/域
index index 索引
table joins 连接表/不支持
primary key primary key 主键/MongoDB会自动将_id字段设置为主键
文档
文档是MongoDB的核心概念。文档就是键值对的一个有序集{'msg':'hello','foo':3}。类似于python中的有序字典。
需要注意的是:
#1、文档中的键/值对是有序的 (python中的字典键值对是无序的)
#2、文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数据类型(甚至可以是整个嵌入的文档)。
#3、MongoDB区分类型和大小写。(MySQL默认不缺分大小写)
#4、MongoDB的文档不能有重复的键。
#5、文档中的值可以是多种不同的数据类型,也可以是一个完整的内嵌文档。文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
文档键命名规范:(遵循变量名的命名并且做到见名知意就可以了)
#1、键不能含有\0 (空字符)。这个字符用来表示键的结尾。
#2、.和$有特别的意义,只有在特定环境下才能使用。
#3、以下划线"_"开头的键是保留的(不是严格要求的)。
集合
类似于MySQL里面的表
数据库
在MongoDB中,多个文档组成集合,多个集合可以组成数据库
数据库也通过名字来标识。数据库名可以是满足以下条件的任意UTF-8字符串:
#1、不能是空字符串("")。
#2、不得含有' '(空格)、.、$、/、\和\0 (空字符)。
#3、应全部小写。
#4、最多64字节。
有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
#1、admin: 从身份认证的角度讲,这是“root”数据库,如果将一个用户添加到admin数据库,这个用户将自动获得所有数据库的权限。再者,一些特定的服务器端命令也只能从admin数据库运行,如列出所有数据库或关闭服务器
#2、local: 这个数据库永远都不可以复制,且一台服务器上的所有本地集合都可以存储在这个数据库中
#3、config: MongoDB用于分片设置时,分片信息会存储在config数据库中
补充
表里面的一行数据对应到mongodb中
其实就是一个类似于字典的字典数据
下载与安装
1.直接去官网下载 解压
2.将bin文件路径添加到环境变量中
3.终端输入mongo即可
mongo.exe 客户端
mongod.exe 服务端
作业
openpyxl模块的读写使用及mongodb概念的更多相关文章
- openpyxl模块介绍
openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档.其 ...
- openpyxl模块(excel操作)
openpyxl模块介绍 openpyxl模块是一个读写Excel 2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读 ...
- 常用模块 - openpyxl模块
一.简介 xlrd/xlwt 主要是针对Office 2003或更早版本的XLS文件格式 缺点:不支持XLSX文件格式 OpenPyXL 能读能写能修改 缺点:不支持XLS Microsoft Exc ...
- openpyxl模块处理excel文件
python模块之——openpyxl 处理xlsx/ xlsm文件 项目原因需要编辑excel文件,经过查询,最先尝试xlwt .wlrd这个两个模块,但是很快发现这两个模块只能编辑xls文件,然而 ...
- python之openpyxl模块
一 . Python操作EXCEL库的简介 1.1 Python官方库操作excel Python官方库一般使用xlrd库来读取Excel文件,使用xlwt库来生成Excel文件,使用xlutils库 ...
- python基础语法12 内置模块 json,pickle,collections,openpyxl模块
json模块 json模块: 是一个序列化模块. json: 是一个 “第三方” 的特殊数据格式. 可以将python数据类型 ----> json数据格式 ----> 字符串 ----& ...
- openpyxl 模块的使用
参考博客:https://www.cnblogs.com/anpengapple/p/6399304.html?utm_source=itdadao&utm_medium=referral 在 ...
- python中使用openpyxl模块时报错: File is not a zip file
python中使用openpyxl模块时报错: File is not a zip file. 最大的原因就是不是真正的 xlsx文件, 如果是通过 库xlwt 新建的文件,或者是通过自己修改后缀名 ...
- Python基础之模块:5、 第三方模块 requests模块 openpyxl模块
目录 一.第三方模块的下载与使用 1.什么是第三方模块 2.如何安装第三方模块 方式一:pip工具 方式二:pycharm中下载 3.注意事项 1.报错并有警告信息 2.报错,提示关键字 3.报错,无 ...
随机推荐
- js 每日一更(数组转换成前端更容易解析的树状结构)
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content ...
- 解决 413 Request Entity Too Large
修改配置文件 vim /etc/nginx/sites-available/default,增加 client_max_body_size 1000m;//最大上传大小 proxy_connect_ ...
- 在java中静态方法与非静态方法
在java中public void与public static void有什么区别 ? public void 修饰是非静态方法,该类方法属于对象,在对象初始化(new Object())后才能被调用 ...
- Activity的生命周期 (必须掌握)
onCreate 方法 当Activity第一次启动的时候调用 onDestroy 方法 当Activity销毁的时候调用 onStart() 方法 当Activity变成可见的时候调用 ...
- Java8 Stream 的一些操作和介绍
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11858186.html Java8 Stream 是一个新的东西, 就是能够将常见的数据结构转 ...
- xshell脚本之条件语句
xshell脚本之条件语句 1.test命令: 如果test命令中列出的条件成立,test命令就会退出并返回状态码0, 如果条件不成立,test命令就会退出并返回非零的退出状态码,这使得if-then ...
- Centos8安装virtualbox
一.执行以下命令并启用 VirtualBox 和 EPEL 包仓库 dnf config-manager --add-repo=https://download.virtualbox.org/virt ...
- rust 实战 - 实现一个线程工作池 ThreadPool
如何实现一个线程池 线程池:一种线程使用模式.线程过多会带来调度开销,进而影响缓存局部性和整体性能.而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务.这避免了在处理短时间任务时创建与销毁线 ...
- 什么是rest?restful?
百度百科解释: rest:REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的 ...
- 赠送4本《 PHP 程序员面试笔试宝典》
< PHP 程序员面试笔试宝典>历时一年,由机械工业出版社出版,在 2018 年 11 月问世.全书共八个章节,涉及 面试笔试经验技巧.PHP 基础知识.PHP 进阶知识,PHP 面向对象 ...