详解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 sys.argv用法实例
May 28 Python
举例讲解Python中的死锁、可重入锁和互斥锁
Nov 05 Python
一些Centos Python 生产环境的部署命令(推荐)
May 07 Python
python实现飞机大战微信小游戏
Mar 21 Python
python GUI图形化编程wxpython的使用
Jul 19 Python
在django模板中实现超链接配置
Aug 21 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
利用python中集合的唯一性实现去重
Feb 11 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
Django Channel实时推送与聊天的示例代码
Apr 30 Python
keras在构建LSTM模型时对变长序列的处理操作
Jun 29 Python
python自动化测试通过日志3分钟定位bug
Nov 20 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在线打包程序源码
2008/07/27 PHP
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
详解Webwork中Action 调用的方法
2016/02/02 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
vue-router跳转页面的方法
2017/02/09 Javascript
H5实现中奖记录逐行滚动切换效果
2017/03/13 Javascript
javascript流程控制语句集合
2017/09/18 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
vue.js通过路由实现经典的三栏布局实例代码
2018/07/08 Javascript
详解使用React制作一个模态框
2019/03/14 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
基于Vue+ElementUI的省市区地址选择通用组件
2019/11/20 Javascript
JavaScript实现多文件下载方法解析
2020/08/07 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
原生js实现弹窗消息动画
2020/11/20 Javascript
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
python爬虫_实现校园网自动重连脚本的教程
2018/04/22 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
Django ORM filter() 的运用详解
2020/05/14 Python
Python sorted对list和dict排序
2020/06/09 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
外企求职信范文分享
2013/12/31 职场文书
小学生环保标语
2014/06/13 职场文书
关于保护环境的建议书
2014/08/26 职场文书
委托书范本
2014/09/13 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
2014年乡镇团委工作总结
2014/12/18 职场文书
2019事业单位个人工作总结范文
2019/08/26 职场文书
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL