python 嵌套insert_Python数据库交互—— pymongo

35b77ed86e42fdae785482f0b289a7f9.png

上一篇推文中我们讲了Python与关系型数据库MYSQL的交互,这一篇我们来讲一个非关系型数据库——MongoDB。

什么是MongoDB

MongoDB是由C++编写的一个开源数据库系统,它将数据存储为一个文档,数据结构为键值对,类似JSON对象,也可以当作Python的字典来看待

4740041f6e2291b09ca64fec5cb4592a.png

与 MYSQL 对比:

MYSQL

MongoDB

数据库 (database)

数据库 (database)

表 (table)

集合 (collection)

记录 (record)

文档对象 (document)

MongoDB 的集合对应 MYSQL 的表的概念,但是集合里没有行、列、关系之分,

如果在MYSQL中添加一个字段,我们可能会考虑新建一张表,添加对应的字段,再与旧表关联,但是在MongDB中直接对文档增加字段非常方便

看到这里可能有读者认为 MongDB 要全面优于 MYSQL ,但其实两个数据库各有优势,具体内容自行查阅,这里就不赘述了

如何安装MongoDB

曾经,MongoDB是很难安装的,半年前我第一次接触MongoDB的时候,照着网上教程装了好几次都失败了,最后跟着知乎的一个专栏文章才安装成功

6dac9052d060b434d1028cbc052f1a06.png

半年后的今天,我又探索安装了好几次,发现安装步骤非常简单,无脑下一步就行了。

打开安装包

bad7581fa654c4b602e12e01e8875454.png

35c645231aa1574e75b3bb9b128c72d5.png

选择日志和数据的存放路径

983c78e93c872d754e6cf7108be77244.png

这个 MongoDB Compass 一定要取消勾选,不然等一天也装不完

5449501e8727f834409deb7cf3999eb2.png

不出意外的话,不到一分钟就装好了

e933f2e185fd4e0ba972e844921879ab.png

在你MongoDB的 bin 目录下 运行 mongo,如上图所示,则证明安装成功

667b1ebf7abc87b233f259fc85c9893b.png

05d1c54037c38747bd02173e718c48ab.png

当然,我们不能每次都要到 bin 目录下才运行 mongo,这样太麻烦了,所以添加一下环境变量

65bc584edc1390c76280b18a62bd53ca.png

05d1c54037c38747bd02173e718c48ab.png

复制路径,粘贴到环境变量里

这样,在任何路径下,我们都可以通过输入 mongo 来启动 MongoDB

97133a7db347897c77f7dbeaa386c1a5.png

MongoDB可视化工具

用命令行来操作来查看数据不够方便,我们需要安装一个可视化工具来更直观地监控数据,这里我选的是 Robo 3T ,全平台支持

打开 Robo 3T 连接,取个名字,测试一下是否能成功连接

561b2a8887c61737dc16613538d62ef2.png

成功的话,保存一下,下次进入就可以直接连接了

f73b44b3bbd9ec20f3cbbe023a214e0b.png

05d1c54037c38747bd02173e718c48ab.png

按 F5 或者 ctrl+R 可以刷新数据库,查看数据变动

pymongo的使用

建立连接,指定数据库、集合

import 

增: insert_one(), insert_many()

player1 

dc07e7035e0cb74058fbe4d761351a04.png

MongoDB会自动添加一个 _id 字段

删: delete_one()是删除第一个符合条件的数据,delete_many()是删除所有符合条件的数据

for 

查: find_one(), find(),需要注意的是 find_one返回的是一个结果,而 find() 返回的是一个生成器,要通过遍历才能得到结果

print

fa7715d7bd3fcd279de606bc5867df8d.png

可嵌套正则,查找名字开头不是D的球员,并按球队(字母顺序)排序

for 

改: update_one(), update_many(); 第一个参数是条件,第二个参数是修改内容,必须以 $ 类型操作符作为键名

collection

upsert 参数默认为 False,意为不增加,如果满足第一个参数(条件)的文档不存在,而 upsert = True, 则直接添加这个文档(document), 即多增加一条记录

聪明的同学肯定想到了,我们能否用 update_one 来取代 insert_one 以避免重复值的插入呢?

没错,答案是可以的。

用 insert_one的话,即使是重复的数据也会插入,一共产生4个文档

player1 

而用 update_one 只产生3个文档

player_list 

除正则外,很多其它符号,这些符号不是pymongo独有的,而是MongDB本身就支持的,以下是崔大整理的一些常用的:

e92b8fc07729f98bb5447300839bb3ac.png

更多详细用法可参考 MongoDB官方文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值