python与mongodb的交互 增删改差
首先引入包:
pip install pymongo 需要用到如下对象:
MongoClient对象:用于与MongoDB服务器建立连接
client=MongoClient('主机ip',端口) DataBase对象:对应着MongoDB中的数据库
db=client.数据库名称 Collection对象:对应着MongoDB中的集合
col=db.集合名称 Cursor对象:查询方法find()返回的对象,用于进行多行数据的遍历
当调用集合对象的find()方法时,会返回Cursor对象
结合for...in...遍历cursor对象 主要方法:
insert_one:加入一条文档对象
insert_many:加入多条文档对象
find_one:查找一条文档对象
find:查找多条文档对象
update_one:更新一条文档对象
update_many:更新多条文档对象
delete_one:删除一条文档对象
delete_many:删除多条文档对象
插入方法:
insert_one() 传入一个字典,表示插入一个文档
insert_many() 传入一个列表,列表的元素为字典,插入多条文档
from pymongo import *
'''
插入方法:
insert_one() 传入一个字典,表示插入一个文档
insert_many() 传入一个列表,列表的元素为字典,插入多条文档
'''
def insert():
try:
# 1 创建连接对象
client = MongoClient(host="localhost", port=27017)
# 2 获取数据库,
# 如果这个数据库不存在,就在内存中虚拟创建
# 当在库里创建集合的时候,就会在物理真实创建这个数据库
db = client.demo # 使用demo数据库
# 向stu集合插入数据
# 插入一条
db.stu.insert_one({"name": "zs", "age": 20})
# 插入多条
db.stu.insert_many([{"name": 1}, {"name": 2}])
except Exception as e:
print(e) if __name__ == '__main__':
insert()
查询方法:
find_one()返回满足条件的文档集中第一条数据,类型为字典
如果没有查询结果返回None
方法find()返回满足条件的所有文档,类型为Cursor对象,可以使用for...in遍历,每项为字典对象
如果没有查询结果返一个空的Cursor对象
from pymongo import *
'''
查询方法:
find_one()返回满足条件的文档集中第一条数据,类型为字典
如果没有查询结果返回None
方法find()返回满足条件的所有文档,类型为Cursor对象,可以使用for...in遍历,每项为字典对象
如果没有查询结果返一个空的Cursor对象
'''
def select():
try:
# 1 创建连接对象
client = MongoClient(host="localhost", port=27017)
# 2 获取数据库,
# 如果这个数据库不存在,就在内存中虚拟创建
# 当在库里创建集合的时候,就会在物理真实创建这个数据库
db = client.demo # 使用demo数据库
# 从stu查询数据
# 查询一条,返回一个字典,如果没有结果返回None
res = db.stu.find_one({"age": 18})
print(res)
# 查询全部结果,返回一个Cursor可迭代对象,每一个元素是字典
# 如果没有查询结果会返回一个空的Cursor对象
res = db.stu.find({"age": {"$gt": 18}})
print(res)
except Exception as e:
print(e) if __name__ == '__main__':
select()
修改方法:
update_one()修改满足条件的文档集中的第一条文档
update_many()修改满足条件的文档集中的所有文档
注意:使用$set操作符修改特定属性的值,否则会修改整个文档
from pymongo import *
'''
修改方法:
update_one()修改满足条件的文档集中的第一条文档
update_many()修改满足条件的文档集中的所有文档
注意:使用$set操作符修改特定属性的值,否则会修改整个文档
'''
def update():
try:
# 1 创建连接对象
client = MongoClient(host="localhost", port=27017)
# 2 获取数据库,
# 如果这个数据库不存在,就在内存中虚拟创建
# 当在库里创建集合的时候,就会在物理真实创建这个数据库
db = client.demo # 使用demo数据库
# 修改数据
# 修改第一条符合条件的数据,传入条件和修改结果
db.stu.update_one({"age": 18},{"$set": {"age": 100}}) # 把年龄是18的第一条年龄改成100
# 所有符合条件数据都修改
# db.stu.update_many({"age": 18},{"$set": {"age": 100}}) # 年龄18的所有数据年龄改成100
except Exception as e:
print(e) if __name__ == '__main__':
update()
删除方法:
delete_one()删除满足条件的文档集中第一条文档
delete_many()删除满足条件的所有文档
注意:使用$set操作符修改特定属性的值,否则会修改整个文档
from pymongo import *
'''
删除方法:
delete_one()删除满足条件的文档集中第一条文档
delete_many()删除满足条件的所有文档
注意:使用$set操作符修改特定属性的值,否则会修改整个文档
'''
def delete():
try:
# 1 创建连接对象
client = MongoClient(host="localhost", port=27017)
# 2 获取数据库,
# 如果这个数据库不存在,就在内存中虚拟创建
# 当在库里创建集合的时候,就会在物理真实创建这个数据库
db = client.demo # 使用demo数据库
# 修改数据
# 修改第一条符合条件的文档删除
db.stu.delete_one({"age": 18}) # 把年龄是18的第一条文档删除
# 所有符合条件数据都删除
db.stu.delete_many({"age": 18}) # 年龄18的所有文档删除
except Exception as e:
print(e) if __name__ == '__main__':
delete()
案例:
使用python向集合t3中插入1000条文档,文档的属性包括_id、name
_id的值为0、1、2、3...999
name的值为'py0'、'py1'...
查询显示出_id为100的整倍数的文档,如100、200、300...,并将name输出
import pymongo
if __name__ == '__main__':
try:
# 1 获得连接对象
client = pymongo.MongoClient(host="localhost", port=27017)
# 2 获取数据库
db = client.demo
# 3 执行业务逻辑 数据库操作
# 插入1000条数据 for id in range(0,1000):
db.t3.insert_one({"_id": id, "name": "py%s"% id}) # 取出符合条件的数据
match = {
"$where": "function(){return this._id%100 == 0 }",
}
res = db.t3.find(match, {"_id": 0, "name": 1})
for info in res:
print(info) except Exception as e:
print(e)
python与mongodb的交互 增删改差的更多相关文章
- 封装对MongoDB数据库的增删改查访问方法(基于MongoDB官方发布的C#驱动)
本文利用MongoDB官方发布的C#驱动,封装了对MongoDB数据库的增删改查访问方法.先用官方提供的mongo-csharp-driver ,当前版本为1.7.0.4714 编写数据库访问帮助类 ...
- python学习之-成员信息增删改查
python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...
- 利用koa实现mongodb数据库的增删改查
概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...
- python和mongodb简单交互
python和mongodb简单交互 1.安装pymongo: pip3 install pymongo 2.pymongo的简单用法: # /usr/bin/env python3 import p ...
- python manage.py shell 的增删改查
python manage.py shell 的增删改查 guoguo-MacBook-Pro:myblog guoguo$ python manage.py shell Python 3.5.1 ( ...
- shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)
shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...
- python连接集群mongodb,封装增删改查
1.下载pymongo pip install pymongo 2.直接上代码 [ini配置文件] 封装读ini省略~~ [db.py] class Database(): def __init__( ...
- MongoDB --- 02. 基本操作,增删改查,数据类型,比较符,高级用法,pymongo
一.基本操作 . mongod 启动服务端 2. mongo 启动客户端 3. show databses 查看本地磁盘的数据库 4. use 库名 切换到要使用的数据库 5. db 查看当前使用的数 ...
- python 10min系列之实现增删改查系统
woniu-cmdb 奇技淫巧--写配置文件生成增删改查系统 视频教程 项目主页跪求github给个star, 线上demo,此页面都是一个配置文件自动生成的 详细的文章介绍和实现原理分析会发布在我的 ...
随机推荐
- WordPress设置圆形旋转头像的方法
很多网站的评论者的头像都是圆形的,并且当你的鼠标移上去的时候会旋转,那么这个怎么实现呢,我在网上找了很多,但是和我的主题都不适用,现在把我修改后的代码贴出来,只要将下面的代码添加到style.css中 ...
- linq使用字符串参数排序
今天找了半天资料,有两种种方法: 1.把字符串参数变为lambda表达式 2.使用System.Linq.dynamic引用 这里我讲第二种方法 第一步:nuget搜索关键字"dynamic ...
- python编程中的if __name__ == 'main与windows中使用多进程
if __name__ == 'main 一个python的文件有两种使用的方法,第一是直接作为程序执行,第二是import到其他的python程序中被调用(模块重用)执行. 因此if __name_ ...
- 并查集(Java实现)
(最好在电脑下浏览本篇博客...手机上看代码不方便) 当时学的时候看的一本印度的数据结构书(好像是..有点忘了..反正跟同学们看的都不一样...)...里面把本文提到的所有情况都提到了,我这里只是重复 ...
- Docker(四):Docker 三剑客之 Docker Compose
前两篇文章我们介绍了 Dockerfile 的使用Docker(二):Dockerfile 使用介绍,我们知道使用一个 Dockerfile 模板文件可以定义一个单独的应用容器,如果需要定义多个容器就 ...
- Vmware虚拟机不能使用键盘的解决方法
有个笔记本thinkpad T440要重装系统,但又怕前面的资料丢失,因此打算直接将整个物理机迁移到VCenter 6.5上去,比GHOST什么的方便多了,利用Vmware Convert工具直接在线 ...
- 国内可用的Internet时间同步服务器地址(NTP时间服务器)
不知道什么鬼我这系统自带的Internet时间同步服务器地址居然不可用,终端ping系统自带服务器两个居然都不通???难道时间服务器也和谐么? 好在阿里云提供了7个NTP时间服务器也就是Interne ...
- 网络通信 --> select()用法
select()用法 头文件 #include <sys/time.h> #include <sys/types.h> #include <unistd.h> 定义 ...
- [poj2002]Squares_hash
Squares poj-2002 题目大意:在笛卡尔坐标系中给出n个点,求这些点可以构成多少个正方形. 注释:$1\le n\le 10^3$,$-2\cdot 10^3\le x , y\le 2\ ...
- scrapy---callback 传递自定义参数
在scrapy提交一个链接请求是用 Request(url,callback=func) 这种形式的,而parse只有一个response参数,如果自定义一个有多参数的parse可以考虑用下面的方法实 ...