mongodb和python交互

学习目标

掌握 mongdb和python交互的增删改查的方法

掌握 权限认证的方式使用pymongo模块

1. mongdb和python交互的模块

pymongo 提供了mongdb和python交互的所有方法

安装方式: pip install pymongo

2. 使用pymongo

2.1 导入pymongo并选择要操作的集合

数据库和集合能够自动创建

2.1.1 无需权限认证的方式创建连接对象以及集合操作对象

from pymongo import MongoClient

client = MongoClient(host,port) # 如果是本地连接host,port参数可以省略

collection = client[db名][集合名]

# collection = client.db名.集合名 # 与上边用法相同

2.1.2 需要权限认证的方式创建连接对象以及集合操作对象

from pymongo import MongoClient

from urllib.parse import quote_plus

user = 'python' # 账号

password = 'python' # 密码

host = '127.0.0.1' # host

port = 27017 # port

uri = "mongodb://%s:%s@%s" % (quote_plus(user),

quote_plus(password),

host)

# quote_plus函数:对url进行编码

# uri = mongodb://python:python@127.0.0.1

client = MongoClient(uri, port=port)

collection = client.db名.集合名

2.2 insert()添加数据

insert可以批量的插入数据列表,也可以插入一条数据

collection.insert({一条数据})

collection.insert([{数据一},{数据二}])

2.2.1 添加一条数据

返回插入数据的_id

ret = collection.insert({"name":"test10010","age":33})

print(ret)

2.2.2 添加多条数据

返回ObjectId对象构成的列表

item_list = [{"name":"test1000{}".format(i)} for i in range(10)]

rets = collection.insert(item_list)

print(rets)

for ret in rets:

print(ret)

2.3 find_one()查找一条数据

接收一个字典形式的条件,返回字典形式的整条数据

如果条件为空,则返回第一条

ret = client.test.test.find_one({'name': 'test10001'})

print(ret) # 包含mongodb的ObjectId对象的字典

_ = ret.pop('_id') # 清除mongodb的ObjectId对象的k,v

print(ret)

2.4 find()查找全部数据

返回所有满足条件的结果,如果条件为空,则返回全部

结果是一个Cursor游标对象,是一个可迭代对象,可以类似读文件的指针,但是只能够进行一次读取

rets = collection.find({"name":"test10005"}),

for ret in rets:

print(ret)

for ret in rets: #此时rets中没有内容

print(ret)

2.5 update()更新数据(全文档覆盖或指定键值,更新一条或多条)

语法:collection.update({条件}, {’$set’:{指定的kv或完整的一条数据}}, multi=False/True, upsert=False/True)

multi参数:默认为False,表示更新一条; multi=True则更新多条; multi参数必须和$set一起使用

upsert参数:默认为False; upsert=True则先查询是否存在,存在则更新;不存在就插入

$set表示指定字段进行更新

2.5.1 更新一条数据;全文档覆盖;存在就更新,不存在就插入

data = {'msg':'这是一条完整的数据1','name':'哈哈'}

client.test.test.update({'haha': 'heihei'}, {'$set':data}, upsert=True)

2.5.2 更新多条数据;全文档覆盖;存在就更新,不存在就插入

data = {'msg':'这是一条完整的数据2','name':'哈哈'} # 该完整数据是先查询后获取的

client.test.test.update({}, {'$set':data}, multi=True, upsert=True)

2.5.3 更新一条数据;指定键值;存在就更新,不存在就插入

data = {'msg':'指定只更新msg___1'}

client.test.test.update({}, {'$set':data}, upsert=True)

2.5.4 更新多条数据;指定键值;存在就更新,不存在就插入

data = {'msg':'指定只更新msg___2'}

client.test.test.update({}, {'$set':data}, multi=True, upsert=True)

2.6 delete_one()删除一条数据

collection.delete_one({"name":"test10010"})

2.7 delete_many()删除全部数据

collection.delete_many({"name":"test10010"})

3. pymongo模块其他api

查看pymongo官方文档或源代码 http://api.mongodb.com/python/current/

小结

掌握pymongo的增删改查的使用

掌握权限认证的方式使用pymongo模块

本文同步分享在 博客“不一样的花朵”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

python做前端mongodb_Python爬虫之mongodb和python交互相关推荐

  1. Python爬取豆瓣音乐存储MongoDB数据库(Python爬虫实战1)

    Python爬取豆瓣音乐存储MongoDB数据库(Python爬虫实战1) 1.  爬虫设计的技术 1)数据获取,通过http获取网站的数据,如urllib,urllib2,requests等模块: ...

  2. python urllib dns 缓存_新手用Python做一个网页爬虫

    咱们好哈,最近博主在学习Python,学习时期也遇到一些问题,获得了一些经历,在此将自个的学习体系地整理下来,假如咱们有爱好学习爬虫的话,能够将这些文章作为参阅,也期待咱们总共同享学习经历. 首要py ...

  3. python基础语法加爬虫精进_从Python安装到语法基础,这才是初学者都能懂的爬虫教程...

    Python和PyCharm的安装:学会Python和PyCharm的安装方法 变量和字符串:学会使用变量和字符串的基本用法 函数与控制语句:学会Python循环.判断语句.循环语句和函数的使用 Py ...

  4. 用python做舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

  5. 0基础学python做什么工作好-零基础学Python,越早明白这些,越快找到好工作!...

    如何学习python,就能仅靠python得到好工作? 读者A:自学python一年,用于写网络爬虫,但一直觉得自己对python理解还很低层.现在大三,打算再用一年时间学习python,让自己对这们 ...

  6. 0基础学python做什么工作好-零基础自学Python多久可以找工作?

    零基础自学Python多久可以找工作?零基础自学3个月很难找到工作.如果全职学习Python的话,学习6个的时间,不一定能达到找到工作的水平,掌握项目经验还需要更久,达到企业需要的岗位要求还需要多练习 ...

  7. 0基础学python做什么工作好-如何快速学习Python编程?可以做什么职业?

    近些年Python热度不减,一直占据编程语言排行榜的前几位.人生苦短,让我们来学一学Pyhotn吧,找到一份满意的工作还是没有问题的. Python语言本身所具有的优势,决定了从事Python学习的开 ...

  8. 没有python基础直接学爬虫_只针对 Python 爬虫,该如何学习?

    最近刚好准备开始写一个 从零开始写python爬虫的系列专栏 希望能帮助到你. 这里先把导言部分贴过来 ------------------------------------------- 从零开始 ...

  9. python中国大学排名爬虫写明详细步骤-python中国大学排名爬虫

    python 中国大学排名爬虫 首先,给一个最好大学网URL:http://www.zuihaodaxue.cn/zuihaodaxuepaiming2016.html, 点击这里进入 . 功能描述 ...

最新文章

  1. Java高并发编程基础之AQS
  2. 在ORACLE中对存储过程加密
  3. c语言外部中断th0,帮忙看看void int0() interrupt 1 //采用中断0 控制节拍 { TH0=0xd8; TL0=0xef; n--; } 啥意思...
  4. .NET中如何通过文本框中按回车键进行的提交数据
  5. docker 镜像上传至hub时报错,提示:denied: requested access to the resource is denied
  6. 光感是什么_Olay5款热门精华:淡斑小白瓶VS光感小白瓶如何选?超A瓶不太A
  7. java 遍历类路径
  8. 二级c语言作答文件不存在,全国计算机等级考试二级C语言上机考试题库及答案...
  9. CF1119H-Triple【FWT】
  10. php在页面中实现累加,小白问个php累加问题
  11. 将一个数的字节顺序逆置
  12. 电子类公司笔试题精选
  13. oracle把ascii吗,oracle中ascii函数及to_char函数使用及编码间的转换
  14. 【15】万魂杀服务器开发之原始NIO、Mina、Netty使用
  15. 多元统计分析matlab,matlab与应用多元统计分析..doc
  16. JVectorMap矢量地图用在小程序显示
  17. 对于软件,我是认真的
  18. Access to XMLHttpRequest at ‘http127.0.0.18000server‘ from origin ‘http127.0.0.15500‘ has
  19. Java项目:学生综合素质评价系统(java+SSM+thymeleaf+layui+Mysql)
  20. 肢体语言心理学+FBI阅人术(行为心理学) 用最短的时间了解一个人

热门文章

  1. 苹果再下一盘很大的棋?Metal优化作用及影响浅析
  2. 推荐一款代码神器,代码量至少省一半! 1
  3. 利刃 MVVMLight 2:Model、View、ViewModel结构以及全局视图模型注入器的说明
  4. 基于linux实现DNS互联网的搭建
  5. 那些炫酷的特效--QQ空间+VUE
  6. 分布式文件系统之MogileFS的使用
  7. 选择不相交区间(贪心:求不相交区间最多个数)
  8. 计算机打不出汉字怎么办,电脑打不出字怎么办,教您电脑打不出字怎么解决
  9. python怎么批量处理数据_python如何批量处理excel数据?_后端开发
  10. openwrt首次登录密码_什么是路由器登录密码 路由器登录密码介绍【详解】