python-mongodb简单封装
#!/usr/bin/python
# -*- coding: UTF-8 -*-
'''@auther :mr.qin
@IDE:pycharm''' import pymongo
from tool.Common import *
import sys class Operation_Mongo(object):
def __init__(self,db='creeper_test'):
'''初始化连接'''
self.connect_client=pymongo.MongoClient("mongodb://{}:{}@{}:27017/".format('xx','xx',tencent_cloud_host))
self.mydb = self.connect_client[db]#连接指定数据库 def insert_collection(self,collection_name,value):#单个插入
mycol=self.mydb[collection_name]
mycol_id=mycol.insert_one(value)
return mycol_id.inserted_id #返回insert_id,即插入文档的id值 def insert_batch_collection(self,collection_name,value_list):#批量插入
mycol=self.mydb[collection_name]
mycol_id=mycol.insert_many(value_list)
return mycol_id.inserted_ids #返回insert_id集合,即插入文档的id值 def select_one_collection(self,collection_name,search_col=None):#获取一条数据
'''search_col:只能是dict类型,key大于等于一个即可,也可为空
可使用修饰符查询:{"name": {"$gt": "H"}}#读取 name 字段中第一个字母 ASCII 值大于 "H" 的数据
使用正则表达式查询:{"$regex": "^R"}#读取 name 字段中第一个字母为 "R" 的数据'''
my_col=self.mydb[collection_name]
try:
result = my_col.find_one(search_col) # 这里只会返回一个对象,数据需要自己取
return result
except TypeError as e:
print('查询条件只能是dict类型')
return None def select_all_collection(self,collection_name,search_col=None,limit_num=sys.maxsize,sort_col='None_sort',sort='asc'):
'''search_col:只能是dict类型,key大于等于一个即可,也可为空
可使用修饰符查询:{"name": {"$gt": "H"}}#读取 name 字段中第一个字母 ASCII 值大于 "H" 的数据
使用正则表达式查询:{"$regex": "^R"}#读取 name 字段中第一个字母为 "R" 的数据
limit_num:返回指定条数记录,该方法只接受一个数字参数(sys.maxsize:返回一个最大的整数值)'''
my_col=self.mydb[collection_name]
try:
if sort_col==False or sort_col=='None_sort':
results=my_col.find(search_col).limit(limit_num)#这里只会返回一个对象,数据需要自己取
else:
sort_flag = 1
if sort == 'desc':
sort_flag = -1
results = my_col.find(search_col).sort(sort_col,sort_flag).limit(limit_num) # 这里只会返回一个对象,数据需要自己取
result_all=[i for i in results]#将获取到的数据添加至list
return result_all
except TypeError as e:
print('查询条件只能是dict类型')
return None def update_one_collecton(self,collection_name,search_col,update_col):
'''该方法第一个参数为查询的条件,第二个参数为要修改的字段。
如果查找到的匹配数据多余一条,则只会修改第一条。
修改后字段的定义格式: { "$set": { "alexa": "12345" } }'''
my_col=self.mydb[collection_name]
try:
relust=my_col.update_one(search_col,update_col)
return relust
except TypeError as e:
print('查询条件与需要修改的字段只能是dict类型')
return None def update_batch_collecton(self,collection_name,search_col,update_col):
'''批量更新数据'''
my_col=self.mydb[collection_name]
try:
relust=my_col.update_many(search_col,update_col)
return relust
except TypeError as e:
print('查询条件与需要修改的字段只能是dict类型')
return None def delete_one_collection(self,collection_name,search_col):#删除集合中的文档
my_col = self.mydb[collection_name]
try:
relust=my_col.delete_one(search_col)
return relust
except TypeError as e:
print('查询条件与需要修改的字段只能是dict类型')
return None def delete_batch_collection(self,collection_name,search_col):#删除集合中的多个文档
'''删除所有 name 字段中以 F 开头的文档:{ "name": {"$regex": "^F"} }
删除所有文档:{}'''
my_col = self.mydb[collection_name]
try:
relust=my_col.delete_many(search_col)
return relust
except TypeError as e:
print('查询条件与需要修改的字段只能是dict类型')
return None def drop_collection(self,collection_name):
'''删除集合,如果删除成功 drop() 返回 true,如果删除失败(集合不存在)则返回 false'''
my_col = self.mydb[collection_name]
result=my_col.drop()
return result def get_connections(self):#获取所有的connections
return self.mydb.list_collection_names() def close_connect(self):
self.connect_client.close()
return 'mongo连接已关闭' if __name__=="__main__":
om=Operation_Mongo()
dict={ "name": "RUNOOB", "alexa": "10000", "url": "https://www.runoob.com" }
my_dict_list=[
{ "name": "Taobao", "alexa": "100", "url": "https://www.taobao.com" },
{ "name": "QQ", "alexa": "101", "url": "https://www.qq.com" },
{ "name": "Facebook", "alexa": "10", "url": "https://www.facebook.com" },
{ "name": "知乎", "alexa": "103", "url": "https://www.zhihu.com" },
{ "name": "Github", "alexa": "109", "url": "https://www.github.com" }
]#不指定id
my_dict_list_assign_id = [
{ "_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"},
{ "_id": 2, "name": "Google", "address": "Google 搜索"},
{ "_id": 3, "name": "Facebook", "address": "脸书"},
{ "_id": 4, "name": "Taobao", "address": "淘宝"},
{ "_id": 5, "name": "Zhihu", "address": "知乎"}
]#指定id
# batch_in=om.insert_batch_collection('test3',my_dict_list_assign_id)
# print(batch_in)
# a=om.create_colltion('test2',dict)
# myquery = {"name": {"$gt": "H"}}#可使用修饰符查询
# myquery_2={ "name": { "$regex": "^\W" } }
# data=om.select_all_collection('test3',sort_col='name',sort='desc')
# data=om.select_all_collection('test3')
# om.delete_one_collection('test3',search_col={ "_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"})
# om.delete_batch_collection('test3',search_col={})
# data = om.select_all_collection('test3')
# datas=om.select_all_collection('test3',myquery_2)
# newvalues = {"$set": {"name": "{}_1"}}
# up_data=om.update_one_collecton('test3',myquery_2,newvalues)
# bup_data = om.update_batch_collecton('test3', myquery_2, newvalues)
# data = om.select_all_collection('test3', myquery_2)
print(om.get_connections())
# print(om.drop_collection('test2'))
om.close_connect()
print(om.get_connections())
python-mongodb简单封装的更多相关文章
- PYTHON 定时器简单封装,基于SCHED
python fresher,轻拍. 在写后台服务时经常会遇到很多定时器的场景,threading.Timer类每实例化一个定时器会有一个新线程去执行,在客户端使用倒是没有问题,如果是服务器端定时器数 ...
- MongoDB Python官方驱动 PyMongo 的简单封装
最近,需要使用 Python 对 MongodB 做一些简单的操作,不想使用各种繁重的框架.出于可重用性的考虑,想对 MongoDB Python 官方驱动 PyMongo 做下简单封装,百度一如既往 ...
- 孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5
孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5并学习权限设置 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十二天. 今天继续学习mongo ...
- 孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4
孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十一天. 今天继续学习mongoDB的简单操作 ...
- 孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3
孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十天. 今天继续学习mongoDB的简单操作, ...
- 孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2
孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第九天. 今天继续学习mongoDB的简单操作, ...
- 孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1
孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第八天. 今天开始学习mongoDB的简单操作, ...
- python网页请求urllib2模块简单封装代码
这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...
- Golang 对MongoDB的操作简单封装
使用MongoDB的Go驱动库 mgo,对MongoDB的操作做一下简单封装 初始化 操作没有用户权限的MongoDB var globalS *mgo.Session func init() { s ...
- 简单封装mongodb
首先安装mongodb npm i mongodb --save 简单封装,在modules目录下新建db.js var MongoClient=require('mongodb').MongoCl ...
随机推荐
- 【转载】 在Ubuntu环境下,搜狗输入法乱码问题的解决
原文作者:高坦的博客 | Tan's Blog 原文链接:https://www.cnblogs.com/gtscool/p/12234104.html本文采用 BY-NC-SA 许可协议.转载请注明 ...
- 小样本学习(Few shot learning)标准数据集(miniImageNet、tieredImageNet、Fewshot-CIFAR100)下载地址
以下数据集均不可商用: https://mtl.yyliu.net/download/ Please note that the splits for miniImageNet follow Ravi ...
- 【Azure Developer】使用Python SDK去Azure Container Instance服务的Execute命令的疑问解释
Azure Container Instance服务介绍 Azure 容器实例(Azure Container Instances,简称 ACI)是一个无服务器容器解决方案,允许用户在 Azure 云 ...
- SenseCraft 部署模型到Grove Vision AI V2图像处理模块
Grove Vision AI V2 图像处理模块开箱测评 摘要 今天教大家快速上手 Grove Vision AI V2 图像处理模块,我们将一起探讨如何利用 SenseCraft 部署 AI 模型 ...
- 视频中ppt、代码、ubuntu环境请扫描下面二维码,回复:ubuntu,即可获得
历时4个多月,第一期Linux驱动视频录制完毕, 一共32期,现在全部同步到了B站. 如果你觉得视频对你有用,建议大家多多点赞,投投免费硬币, 算是对我辛苦的劳动的认可. 视频中ppt.代码.ubun ...
- 热力学平衡、Liftshitz 理论和朗道理论
科学家们经过广泛的实验发现:熔化往往始于固体表面.熔化时,体系由 "固体-气体接触" 变为 "固体-熔化层接触 + 熔化层-气体接触".如果后者的能量更稳定,则 ...
- Python向IP地址发送字符串
在Python中,向IP地址发送字符串通常意味着你需要通过某种协议来实现通信.最常见的协议包括TCP和UDP.这里,我将分别给出使用TCP和UDP协议向指定IP地址发送字符串的示例代码. 1.TCP. ...
- Oracle导出数据库与还原
导出部分 1.获取到Oracle directory目录与实际电脑目录的映射 2.CMD导出Oracle数据库 DMP文件 //expdp 用户/密码@数据库监听地址 schemas=表空间名称 du ...
- Kubernetes-18:Dashboard安装及使用
Helm安装Dashboard 简介 Dashboard 是 kubernetes 的图形化管理工具,可直观的看到k8s中各个类型控制器的当前运行情况,以及Pod的日志,另外也可直接在 dashboa ...
- git重命名文件夹
在源代码文件夹中打开git bash, 不同名称的文件夹命令: 1. git mv A An 3. git add -u An 4. git commit -m "重命名A为An&quo ...