详解Python3操作Mongodb简明易懂教程


Posted in Python onMay 25, 2017

连接数据库

链接数据库需要提供一个地址和接口即可。首先还是要导入包。

from pymongo import MongoClient
conn = MongoClient('localhost',27017)

当然,你可以使用如下写法:

conn = MongoClient('mongodb://localhost:27017/')

创建数据库

mongodb不需要提前创建好数据库,而是直接使用,如果发现没有则自动创建。

db = conn.testdb

上面的语句,会创建一个testdb的数据库。但是,在没有插入数据的时候,该数据库在管理工具里面你是看不到的(不显示)。

插入数据

首先第一步我们先插入一条数据瞧瞧。

单条记录插入

from pymongo import MongoClient
conn = MongoClient('mongodb://localhost:27017/')
db = conn.testdb
db.col.insert({"name":'yanying','province':'江苏','age':25})

注意: 接下来的操作中会忽略掉数据库连接操作,直接写核心代码,请自行补上。

python控制台什么都没有发生,这就是成功的意思。使用管理工具查看数据库记录,的确包含了一条数据。

详解Python3操作Mongodb简明易懂教程

多条记录插入

Mongodb一次也可以插入多条数据

db.col.insert([
 {"name":'yanying','province':'江苏','age':25},
 {"name":'张三','province':'浙江','age':24},
 {"name":'张三1','province':'浙江1','age':25},
 {"name":'张三2','province':'浙江2','age':26},
 {"name":'张三3','province':'浙江3','age':28},
])

查询数据

下面我们将刚刚插入的数据查询出来。

单条查询

我们可以使用find_one()来查询一条记录。

db.col.find_one()

上面的语句可以查询出一条mongodb记录。记录中多出来的_id是Mongodb自动生成的唯一值。

{'_id': ObjectId('5925351ad92fac3250b9ae3f'), 'name': 'yanying', 'province': '江苏', 'age': 25}

我们再随便插入点儿数据供下面操作使用。(省略几万字)

查询所有

如果我们需要查询出所有的记录,则可以使用db.col.find()但是查出来的是一个结果资源集。

我们可以使用for来列出所有记录。

for item in db.col.find():
 print(item)

这样可以获取所有记录。

{'_id': ObjectId('5925351ad92fac3250b9ae3f'), 'name': 'yanying', 'province': '江苏', 'age': 25}
{'_id': ObjectId('592550e5d92fac0b8c449f87'), 'name': 'zhangsan', 'province': '北京', 'age': 29}
{'_id': ObjectId('592550f6d92fac3548c20b1a'), 'name': 'lisi', 'province': '上海', 'age': 22}
{'_id': ObjectId('59255118d92fac43dcb1999a'), 'name': '王二麻', 'province': '广东', 'age': 30}

条件查询

只要将查询条件当做参数塞入即可筛选数据。

for item in db.col.find({'name':"yanying"}):
 print(item)

查询结果

{'_id': ObjectId('5925351ad92fac3250b9ae3f'), 'name': 'yanying', 'province': '江苏', 'age': 25}

当然还可以查询小于某个值的记录

for item in db.col.find({"age":{"$lt":25}}):
 print(item)

或者大于某个值的记录

for item in db.col.find({"age":{"$gt":25}}):
 print(item)

统计查询

上面的代码可以统计出所有的记录数量

db.col.find().count() // 4

或者加点儿条件

db.col.find({"age":{"$gt":25}}).count() //2

根据_id查询记录

_id是mongodb自动生成的id,其类型为ObjectId,想要使用就需要转换类型。

python3中提供了该方法,不过需要导入一个库。

from bson.objectid import ObjectId

这样就可以直接使用_id进行查询啦。

collection.find_one({'_id':ObjectId('592550e5d92fac0b8c449f87')})

结果排序

只要将需要排序的字段放入sort方法即可,Mongodb默认为升序

db.col.find().sort("age")

不过你也可以加一些参数去改变排序的方式。比如倒序,不过要记得先导入pymongo库

import pymongo
db.col.find().sort("UserName",pymongo.DESCENDING)

你还可以让他升序,尽管默认如此

for item in db.col.find().sort('age',pymongo.ASCENDING):
 print(item)

更新数据

更新数据很简单,只需要一个条件和需要更新的数据即可

db.col.update({'_id':ObjectId('59255118d92fac43dcb1999a')},{'$set':{'name':'王二麻33333'}})

结果如下:王二麻变成了王二麻33333

{'_id': ObjectId('59255118d92fac43dcb1999a'), 'name': '王二麻33333', 'province': '广东', 'age': 30}

删除数据

删除数据使用remove()方法,如果方法带条件,则删除指定条件数据,否则删除全部

删除name为王二麻33333的用户。

db.col.remove({'name':'王二麻33333'})

删除全部数据(慎用)

db.col.remove()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python计算最小优先级队列代码分享
Dec 18 Python
详解python中asyncio模块
Mar 03 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
Python 运行 shell 获取输出结果的实例
Jan 07 Python
python用win32gui遍历窗口并设置窗口位置的方法
Jul 26 Python
详解python中__name__的意义以及作用
Aug 07 Python
余弦相似性计算及python代码实现过程解析
Sep 18 Python
Python爬虫使用代理IP的实现
Oct 27 Python
django 框架实现的用户注册、登录、退出功能示例
Nov 28 Python
如何快速一次性卸载所有python包(第三方库)呢
Oct 20 Python
python实现一个简单RPC框架的示例
Oct 28 Python
Python字典的基础操作
Nov 01 Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 #Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 #Python
Python win32com 操作Exce的l简单方法(必看)
May 25 #Python
python win32 简单操作方法
May 25 #Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 #Python
Python正则表达式完全指南
May 25 #Python
Tensorflow简单验证码识别应用
May 25 #Python
You might like
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
Canvas实现放射线动画效果
2017/02/15 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
微信小程序实战之登录页面制作(5)
2020/03/30 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
Vue解析剪切板图片并实现发送功能
2020/02/04 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
改进Django中的表单的简单方法
2015/07/17 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
解决PyCharm控制台输出乱码的问题
2019/01/16 Python
django-rest-framework 自定义swagger过程详解
2019/07/18 Python
python实现桌面气泡提示功能
2019/07/29 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
HTML5梦幻之旅——炫丽的流星雨效果实现过程
2013/08/06 HTML / CSS
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
数据库设计的包括哪两种,请分别进行说明
2016/07/15 面试题
青年文明号创建承诺
2014/03/31 职场文书
捐款倡议书怎么写
2014/05/13 职场文书
2015年财务试用期工作总结
2014/12/24 职场文书
初中化学教学反思
2016/02/22 职场文书
Mysql事务索引知识汇总
2022/03/17 MySQL
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python