MongoDB是由c++语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式类似JSON对象,它的字段值可以包含其他文档,数组及文档数组,非常灵活。在这一节中,我们就来看看Python 3下MongoDB的存储操作。
在开始之前,请确保已经安装好了MongoDB并启动了其服务,并且安装好了Python的PyMongo库。
连接MongoDB时,我们需要使用PyMongo库里面的MongoClient。一般来说,传入MongoDB的IP及端口即可,其中第一个参数为地址主机,第二个参数为端口港口(如果不给它传递参数,默认是27017):
进口pymongo 客户=pymongo。MongoClient(主机=發ocalhost”,端口=27017)
这样就可以创建MongoDB的连接对象了。
另外,MongoClient的第一个参数主机还可以直接传入MongoDB的连接字符串,它以MongoDB开头,例如:
客户=MongoClient (“mongodb://localhost: 27017/?
这也可以达到同样的连接效果。
MongoDB中可以建立多个数据库,接下来我们需要指定操作哪个数据库。这里我们以测试数据库为例来说明,下一步需要在程序中指定要使用的数据库:
db=client.test
这里调用客户的测试属性即可返回测试数据库。当然,我们也可以这样指定:
db=客户['测试']
这两种方式是等价的。
MongoDB的每个数据库又包含许多集合(集合),它们类似于关系型数据库中的表。
下一步需要指定要操作的集合,这里指定一个集合名称为学生。与指定数据库类似,指定集合也有两种方式:
收集=db.students
收集=db(“学生”)
这样我们便声明了一个集合对象。
接下来,便可以插入数据了。对学生于这个集合,新建一条学生数据,这条数据以字典形式表示:
学生={ “id”:“20170101”, “名称”:“乔丹”, “年龄”:20, “性别”:“男性” }
这里指定了学生的学号,姓名,年龄和性别。接下来,直接调用收集的insert()方法即可插入数据,代码如下:
结果=collection.insert(学生) 打印(结果)
在MongoDB中,每条数据其实都有一个_id属性来唯一标识。如果没有显式指明该属性,MongoDB会自动产生一个ObjectId类型的_id属性.insert()方法会在执行后返回_id值。
运行结果如下:
5932 a68615c2606814c91f3d
引用>
当然,我们也可以同时插入多条数据,只需要以列表形式传递即可,示例如下:
学生1={ “id”:“20170101”, “名称”:“乔丹”, “年龄”:20, “性别”:“男性” } 学生二={ “id”:“20170202”, “名称”:“迈克”, 年龄:21岁 “性别”:“男性” } 结果=集合。插入([学生1,学生二]) 打印(结果)返回结果是对应的_id的集合:
[ObjectId (5932 a80115c2606a59e8a048), ObjectId (5932 a80115c2606a59e8a049)]
引用>
实际上,在PyMongo 3. x版本中,官方已经不推荐使用插入()方法了。当然,继续使用也没有什么问题。官方推荐使用insert_one()和insert_many()方法来分别插入单条记录和多条记录,示例如下:
学生={ “id”:“20170101”, “名称”:“乔丹”, “年龄”:20, “性别”:“男性” } 结果=collection.insert_one(学生) 打印(结果) 打印(result.inserted_id)运行结果如下:
& lt; pymongo.results。在0 x10d68b558> InsertOneResult对象;
引用>
5932年ab0f15c2606f0c1cf6c5
与插入()方法不同,这次返回的是InsertOneResult对象,我们可以调用其inserted_id属性获取_id。
对于insert_many()方法,我们可以将数据以列表形式传递,示例如下:
python使用pymongo操作蒙戈的完整步骤