Python语言操作数据库之Mongodb
小标 2018-10-09 来源 : 阅读 1120 评论 0

摘要:本文主要向大家介绍了Python语言操作数据库之Mongodb,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言操作数据库之Mongodb,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

一、安装Pymongo

安装Python的MongoDB模块PyMongo

 

1、源码安装:

下载地址:

https://pypi.python.org/packages/69/8a/2384c55f4bd494eeb6104a9b35c36714ba1178dcd08ee5a73b92eed3d8c1/pymongo-3.6.0.tar.gz#md5=2f64fa7691c77535b72050704cc12afb

解压安装包,进入解压目录执行安装命令

python setup.py install 

 

2、pip安装

pip install pymongo

或者

easy_install pymongo 

 

二、使用Pymongo操作Mongodb

1、导入模块

>>> Import pymongo 

2、建立MongodbClient的连接

>>> client = pymongo.MongoClient("localhost",27017)

或者

>>> client = pymongo.MongoClient(“mongodb://localhost:27017/”) 

3、得到数据库

db=client.mydb

或者

db=client[“mydb”] 

4、得到集合

books=db.my_collection

或者

books=db[“my_collection”] 


查询

查询一条数据,使用find_one():

>>> books.find_one()

{u'lang': u'Python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}


查询所有数据,使用find():

>>> for i in books.find():

...     print i

...

{u'lang': u'Python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}

{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}

在 books 引用的对象中有 find() 方法,它返回的是一个可迭代对象,包含着集合中所有的文档。

  

条件查询:

>>> books.find_one(“lang”:”Python”)

{u'lang': u'Python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'} 

 

查询结果排序:

>>> for i in books.find().sort("title", pymongo.ASCENDING):

...     print i

...

{u'lang': u'python', u'_id': ObjectId('554f0e3cf579bc0767db9edf'), u'author': u'qiwsir', u'title': u'from beginner to master'}

{u'lang': u'english', u'title': u'physics', u'_id': ObjectId('554f28f465db941152e6df8b'), u'author': u'Newton'}

 

这是按照"title"的值的升序排列的,注意 sort() 中的第二个参数,意思是升序排列。如果按照降序,就需要将参数修改为 Pymongo.DESCEDING,也可以指定多个排序键。

 

统计文档数

>>> books.find().count()

2

 

当前有2条数据

mongodb 中的每个文档,本质上都是“键值对”的类字典结构。这种结构,一经 Python 读出来,就可以用字典中的各种方法来操作。与此类似的还有一个名为 json 的东西,可以阅读本教程第贰季进阶的第陆章模块中的《标准库(8)。但是,如果用 Python 读过来之后,无法直接用 json 模块中的 json.dumps() 方法操作文档。其中一种解决方法就是将文档中的'_id'键值对删除(例如:del doc['_id']),然后使用 json.dumps() 即可。读者也可是使用 json_util 模块,因为它是“Tools for using Python’s json module with BSON documents”,请阅读//api.mongodb.org/Python/current/api/bson/json_util.html中的模块使用说明。

 

插入数据

插入1条数据:

>>> b2 = {"title":"physics", "author":"Newton", "lang":"english"}

>>> books.insert(b2)

ObjectId('554f28f465db941152e6df8b')

 

批量插入数据:

>>> n1 = {"title":"java", "name":"Bush"}

>>> n2 = {"title":"fortran", "name":"John Warner Backus"}

>>> n3 = {"title":"lisp", "name":"John McCarthy"}

>>> n = [n1, n2, n3]

>>> n

[{'name': 'Bush', 'title': 'java'}, {'name': 'John Warner Backus', 'title': 'fortran'}, {'name': 'John McCarthy', 'title': 'lisp'}]

>>> books.insert(n)

[ObjectId('554f30be65db941152e6df8d'), ObjectId('554f30be65db941152e6df8e'), ObjectId('554f30be65db941152e6df8f')]

 

更新

对于已有数据,进行更新,是数据库中常用的操作。比如,要更新 name 为 Hertz 那个文档:

>>> books.update({"name":"Hertz"}, {"$set": {"title":"new physics", "author":"Hertz"}})

{u'updatedExisting': True, u'connectionId': 4, u'ok': 1.0, u'err': None, u'n': 1}

>>> books.find_one({"author":"Hertz"})

{u'title': u'new physics', u'_id': ObjectId('554f2b4565db941152e6df8c'), u'name': u'Hertz', u'author': u'Hertz'}

在更新的时候,用了一个 $set 修改器,它可以用来指定键值,如果键不存在,就会创建。

 

关于修改器,不仅仅是这一个,还有别的呢。


删除

删除可以用 remove() 方法:

>>> books.remove({"name":"Bush"})

{u'connectionId': 4, u'ok': 1.0, u'err': None, u'n': 1}

>>> books.find_one({"name":"Bush"})

>>>

这是将那个文档全部删除。当然,也可以根据 mongodb 的语法规则,写个条件,按照条件删除。

 

索引

索引的目的是为了让查询速度更快,当然,在具体的项目开发中,要视情况而定是否建立索引。因为建立索引也是有代价的。

>>> books.create_index([("title", pymongo.DESCENDING),])

u'title_-1'


本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程