很久没有写博客了,今天早上简单的复习了下mongdb,在之前的工作中一直用的是mysql,没有用过mongdb,对于大型的爬虫项目很多大佬都建议用mongdb。我们公司的Java爬虫用mongdb。对于python而言操作数据库是非常简单的。
早上起来没什么事情就简单了找了一篇博客,一看是崔大佬写的。
https://juejin.im/post/5addbd0e518825671f2f62ee#heading-8
上面是博客地址。
然后我根据崔大佬的博客学习了下。也加深了下对mongdb的理解和用途。
MongoDB是由C++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档、数组及文档数组,非常灵活。我们就来看看Python 3下MongoDB的存储操作
1. 准备工作
在开始之前,请确保已经安装好了MongoDB并启动了其服务,并且安装好了Python的PyMongo库,我是在linux 上安装,在网上找的教程。
2. 连接MongoDB
连接MongoDB时,我们需要使用PyMongo库里面的MongoClient
。一般来说,传入MongoDB的IP及端口即可,其中第一个参数为地址host
,第二个参数为端口port
(如果不给它传递参数,默认是27017)
from pymongo import MongoClient
client = MongoClient('localhost',27017)
还可这样写
client = MongoClient('mongodb://localhost:27017')
3. 指定数据库
像mysql 指定数据库需要在上步完成。
MongoDB中可以建立多个数据库,接下来我们需要指定操作哪个数据库。这里我们以abc数据库为例来说明,下一步需要在程序中指定要使用的数据库:
db = client.abc
也可以这样
db = client['abc']
如果你没有这个数据库,他会自己创建,这一点我非常喜欢。
4. 指定集合
MongoDB的每个数据库又包含许多集合(collection),它们类似于关系型数据库中的表。
下一步需要指定要操作的集合,这里指定一个集合名称为students。与指定数据库类似,指定集合也有两种方式:
collection = db.students
#或者
collection = db['students']
这样我们便声明了一个Collection
对象
5. 插入数据
接下来,便可以插入数据了。对于students这个集合,新建一条学生数据,这条数据以字典形式表示
student = {
'id': '20170101',
'name': 'Jordan',
'age': 20,
'gender': 'male'
}
result = collection.insert(student)
直接调用collection
的insert()
方法即可插入数据。
在MongoDB中,每条数据其实都有一个_id
属性来唯一标识。如果没有显式指明该属性,MongoDB会自动产生一个ObjectId
类型的_id
属性。insert()
方法会在执行后返回_id
值。
实际上,在PyMongo 3.x版本中,官方已经不推荐使用insert()
方法了。当然,继续使用也没有什么问题。官方推荐使用insert_one()
和insert_many()
方法来分别插入单条记录和多条记录,示例如下
student = {
'id': '20170101',
'name': 'Jordan',
'age': 20,
'gender': 'male'
}
result = collection.insert_one(student)
print(result)
print(result.inserted_id)