oracle 调用存储过程返回集合插入临时表_Python3网络爬虫课程 5.3 非关系型数据库存储...

NoSQL,全称为Not Only SQL,不仅仅是SQL,泛指非关系型数据库。
NoSQL是基于键值对的存储,不需要进行SQL层的解析,数据之间没有耦合性,性能高。
非关系型数据库可以分为以下几类:

3c30ce5a4baea4af79983d074b4a999e.png

对于爬虫爬取的数据来说,可能会有数据缺失、数据结构嵌套等情况,如果使用关系型数据库村粗的话,需要提前建表,而且表之间的关系关系,数据的序列化等都比较麻烦。如果使用非关系型数据库存储的话,就比较方便了。
本节主要讲解MongoDB的使用。 MongoDB是一个C++编写的、基于分布式文件存储的开源的非关系型数据库系统。其内容存储形式类似于JSON对象,非常灵活。

1. 准备工作

需要安装MongoDB和PyMongo库,第一节“环境配置”都有讲,这里略过。

2. 连接MongoDB

我们使用PyMongo中的MongoClient来连接MongoDB。

c79306acf948d8af7eebf6f007618612.png

另外,还可以使用下面这种方式连接MongoDB。

86e4d05f7316615acf65b84eeddb00bb.png

3. 指定数据库

MongoDB中一般存在很多数据库,怎么指定我们需要操作的数据库呢?

50709e3dcaede996017067161335b42a.png

也可以使用这种方式指定。

a5d0789840d26ad5a06eab69ae653edb.png

4. 指定集合

每个数据库包含很多的集合,集合就相当于关系型数据库中的表,怎么指定我们操作的集合呢?

8e784d8e44894ef9f7445cac726c4747.png

也可以这样写,等价于上面。

c7a3480a09b42ef9004f258c2572ffd8.png

5. 插入数据

对于上面的person集合,演示一下怎么插入一条数据。

e794b395671918ecc9d8a8b2eb11e154.png

执行结果如下:

7ef11b4c0260286a0783f4d72d6592a0.png

如果插入多条数据呢?我们可以使用insert_many().

9b27bec26433e37d89b1a1de56659129.png

执行结果如下:

b4e517e981e003f126f3f7650f6c9add.png

6. 数据查询

可以使用find_one()方法或find()方法进行查询.
find_one()返回单个结果,find()返回的是生成.

1dffd7f7590e22799a7ced2e12a6baea.png

这里查询name='Amy'的人, 其返回类型为字典类型.

b4be9bd374e35378bead6defc89eb2fb.png

如果要查询多条结果,使用find()方法.

a4acd0d2d01dbbf19dd609a5b74197e2.png

执行结果如下:

adcf5637c312e924bb06dbe2291c8755.png

如果要返回年龄大于20的数据,怎么写呢?

ac1a6f5b2d6c2e4b2f4f7092bcf845f3.png

$gt表示大于号,其他比较符号如下所示:

6db02c1b13d7ba1e788c19ec6117494e.png

另外还可以使用正则匹配:

fee8f7f1780ae3022b16915ee3201ef3.png

下面是一些特殊符号的说明:

5852c0ae4ffe76a6cc3a23eb8a89890d.png

7. 计数

调用count_documents()方法,就可以查询有多少条数据。

fca43d15eea0d155e09afed7c8a0bb81.png

如果统计符合某条件的数据的数量,可以传入条件:

0d12fae4e815afb0ef7bb9b420f85d50.png

8. 排序

直接调用sort()方法就可以排序,传入参数可以设置其为升序还是降序:

8b17ccb406bf8d715a9c33007c5bfb01.png

执行结果如下:

abf8ad6fe4fefdc280098df6351ed888.png

9. 偏移

如果我们只想取某几个元素或某些元素,可以使用skip()方法跳过一些元素,取到我们需要的元素:

a9791d448b4f4bff98c0cf3a1a1c48fe.png

还可以使用limit()方法指定要取的结果的个数。

264138caeae37d8404519d1fcb979b56.png

10. 更新

使用update_one和updae_many()方法就可以更新数据,只需要指定更新的条件和更新后的数据。

d299a04d485b830e4403587a4d07103f.png

还可以指定某个条件,给其age加1:

d486af72df8db8890220dc93fbfce87a.png

上面调用的find_one()和update_one()方法,如果批量更新的话,可以这样:

b3ea0e758027749982e08f8afe94929d.png

11. 删除

删除操作比较简单,直接调用delete_one()或者delete_many()方法,传入条件即可,符合条件的所有数据都会被删除。

b5a3567ffc8f8c74be536eb98d51cf6a.png

12. 其他

PyMongo还提供了一些其他的方法,如find_one_and_delete()、find_one_and_replace()、
find_one_and_update()、create_index()、create_indexes()、drop_index()等。
不再一一赘述,有需要的话请查询PyMongo文档。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值