python爬虫27 | 当Python遇到MongoDB的时候,存储av女优的数据变得如此顺滑爽~
上次
我们知道了怎么操作 MySQL 数据库
python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。
MySQL 有些年头了
开源又成熟又牛逼
所以现在很多企业都在使用 MySQL
MySQL 是关系型数据库
其实当前主流的数据库
例如
Oracle、DB2、PostgreSQL、Microsoft SQL Server 等等
都是关系型数据库
这样的话
它们可以在数据表之间建立索引、约束
进行关联
让表与表之间产生联系
可以让数据重复利用,不会浪费

相对应的就是
非关系型数据库
NoSQL
它不用传统的 SQL 语句进行操作
而是有自己的独特的数据存储方式
可以说相当方便
NOSQL 的经典代表数据库就是我们今天要说的
MongoDB
由 C++ 写的 文档存储 形式的非关系数据库
如果你对 JSON 有所了解
那么 MongoDB 对你来说so easy

由于它是基于内存对数据进行处理的
所以读写速度相对更高一些
好了
吹了一波 MongoDB 的牛逼之后

接下来小帅b就来跟你说说
怎么玩 MongoDB
接下来就是

我们先来看看这样的数据
| name | quantity | size | status | tags | rating |
|---|---|---|---|---|---|
| journal | 25 | 14x21,cm | A | brown, lined | 9 |
| notebook | 50 | 8.5x11,in | A | college-ruled,perforated | 8 |
| paper | 100 | 8.5x11,in | D | watercolor | 10 |
| planner | 75 | 22.85x30,cm | D | 2019 | 10 |
| postcard | 45 | 10x,cm | D | double-sided,white | 2 |
(来自 mongodb 官方例子)
有些字段里面包含多个信息
如果按传统的 SQL 的话
查询起来比较麻烦
而且需要创建多张表进行关联
而用文档格式存储的话就可以使用这样的格式表示
{"name": "notebook","qty": 50,"rating": [ { "score": 8 }, { "score": 9 } ],"size": { "height": 11, "width": 8.5, "unit": "in" },"status": "A","tags": [ "college-ruled", "perforated"]}
是不是很简单咧
那么接下来小帅b就带你使用 python 来操作 MangoDB 吧
真香假设
本文假设你的操作系统已经安装好 MangoDB 了
如果你还没安装的话
可以到以下链接进行下载安装
https://docs.mongodb.com/manual/installation/?jmp=footer&_ga=2.246611149.899311115.1556631996-38380112.1556631995

当你安装完之后
启动 mongodb
然后输入 mongo 就可以操作 MongoDB 了

好了好了
我们使用 python 代码来操作一下吧
这次我们需要一个库
Pymongo
from pymongo import MongoClient
连接到你的 MongoDB
conn = MongoClient('mongodb://localhost:27017/')
27017 是你的 MongoDB 的默认端口
创建一个 avIdol 数据库,如果 mongodb 没有会自行创建
db = conn.avIdol
往数据库插入一条数据
db.col.insert({"name": '波多野結衣', 'bwh': '{ "b": 90, "w": 59, "h": 85}' , 'age': 30})
运行一下
没报什么错
接着我们使用
print(db.col.find_one())
来查询一下是否插入数据了

可以看到
数据插入成功
来个批量插入吧
db.col.insert([{"name": '波多野結衣', 'bwh': '{ "b": 90, "w": 59, "h": 85}' , 'age': 30},{"name": '吉泽明步', 'bwh': '{ "b": 86, "w": 58, "h": 86}' , 'age': 35},{"name": '桃乃木香奈', 'bwh': '{ "b": 80, "w": 54, "h": 80}' , 'age': 22},{"name": '西宫梦', 'bwh': '{ "b": 85, "w": 56, "h": 86}' , 'age': 22},{"name": '松下纱荣子', 'bwh': '{ "b": 88, "w": 57, "h": 86}' , 'age': 28}])

这次我们使用 for 循环查询一下数据库
for item in db.col.find():print(item)
可以看到
数据被我们存储下来了

当然
你也可以通过条件查询
例如根据 id 查询

删除 波多野结衣

db.col.remove({"name": "波多野結衣"})
删除全部
db.col.remove()
把 吉泽明步 换成 苍井空
db.col.update({'name': '吉泽明步'}, {'$set': {'name': '苍井空'}})
ok
以上就是 python 对 MongoDB 的操作
更多关于 MongoDB 的介绍可以到官方看看
https://docs.mongodb.com/
以后
小帅b带你玩爬虫项目实战的时候
还会提及 MongoDB 的
期待就好
那么
我们下回见了
peace

记得素质三连!!!!!!!!!!!!!!!!
python爬虫27 | 当Python遇到MongoDB的时候,存储av女优的数据变得如此顺滑爽~的更多相关文章
- python爬虫-基础入门-python爬虫突破封锁
python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...
- Python爬虫学习==>第二章:MongoDB环境配置
学习目的: MongoDB的安装 正式步骤 (VMWare 虚拟机上无法安装这个MongoDB的自启动服务,如果你能办到,请多赐教) Step1:MongoDB的简介 MongoDB是一个基于分布式文 ...
- python爬虫成长之路(一):抓取证券之星的股票数据
获取数据是数据分析中必不可少的一部分,而网络爬虫是是获取数据的一个重要渠道之一.鉴于此,我拾起了Python这把利器,开启了网络爬虫之路. 本篇使用的版本为python3.5,意在抓取证券之星上当天所 ...
- python爬虫---->github上python的项目
这里面通过爬虫github上的一些start比较高的python项目来学习一下BeautifulSoup和pymysql的使用.我一直以为山是水的故事,云是风的故事,你是我的故事,可是却不知道,我是不 ...
- 【python爬虫】用python编写LOL战绩查询
介绍一个简单的python爬虫,通过Tkinter创建一个客户端,当输入要查询的LOL用户名称的时候,可以显示出当前用户的所在服务器,当前战力和当前段位. 爬取网页地址:http://lol.duow ...
- python爬虫——拉钩网python岗位信息
之前爬取的网页都是采用"GET"方法,这次爬取"拉勾网"是采取了"POST"的方法.其中,"GET"和"POS ...
- 简单python爬虫编写,Python采集妹子图!
疫情期间在家闲来无事,每天打游戏荒废了一段时间.我觉得自己不能在这么颓废下去,就立马起身写了一点python代码(本人只是python新手). 很多人学习python,不知道从何学起.很多人学习pyt ...
- Python爬虫学习:Python内置的爬虫模块urllib库
urllib库 urllib库是Python中一个最基本的网络请求的库.它可以模拟浏览器的行为发送请求(都是这样),从而获取返回的数据 urllib.request 在Python3的urllib库当 ...
- Python爬虫抓取 python tutorial中文版,保存为word
看到了中文版的python tutorial,发现是网页版的,刚好最近在学习爬虫,想着不如抓取到本地 首先是网页的内容 查看网页源码后发现可以使用BeautifulSoup来获取文档的标题和内容,并保 ...
随机推荐
- sqlalchemy配置多读写库多连接后的关系设置
前言 一般来说,解决sqlalchemy 连接多个库的最简单的方式是新建两个或多个db.session 相互没有关联,modle配置不同的db.session来连接,这样的话,relationship ...
- linux守护进程的编写
linux监控一个进程进行 代码如下: #!/bin/sh cd /home/autoprocess/ auto=`pgrep -f autoProcessNew.php | wc -l` if [ ...
- ASP.NET 知识点总结(七)
1.new修饰符是起什么作用new 修饰符用于声明类或类的成员,表示隐藏了基类中同名的成员.而new 操作符用于实例化一个类型new 修饰符只能用于继承类,一般用于弥补基类设计的不足new 修饰符和 ...
- ACM_完全背包
背包3 Time Limit: 2000/1000ms (Java/Others) Problem Description: 有n种(每一种有无数个)重量和价值分别为Wi,Vi的物品,现从这些物品中挑 ...
- CodeDOMProvider 类
CodeDomProvider 可用来创建和检索代码生成器和代码编译器的实例.代码生成器可以生成特定语言的代码,如:C#.Visual Basic.JScript 等,而代码编译器可以将代码文件编译成 ...
- 全面学习ORACLE Scheduler特性(11)使用Job Classes
六.使用Job Classes Job Classes 相当于创建了一个job组,DBA可以将那些具有相同特性的job,统统放到相同的Job Classes中,然后通过对Job Class应用ORAC ...
- WCF wsdlexception(at/html):faultCode=INVALID_WSDL
WCF 部署正常,通过浏览器查看服务也OK,但是通过SOAP UI创建客户端请求时就异常: wsdlexception(at/html):faultCode=INVALID_WSDL: Expecte ...
- LN : JSON (利用C++实现JSON)
Appreciation to our TA, 王毅峰, who designed this task. 问题描述 JSON, JavaScript Object Notation,is an fle ...
- css边框样式、边框配色、边框阴影、边框圆角、图片边框
边框样式 点线式边框 破折线式边框 直线式边框 双线式边框 槽线式边框 脊线式边框 内嵌效果的边框 突起效果的边框 <div style="width: 300px; height: ...
- vue路由传参(学习心得)
如果组件通过query来传递num参数为1,相当与在 url 地址后面拼接参数 <template> <div> <h3>首页</h3> <rou ...