#!/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简单封装的更多相关文章

  1. PYTHON 定时器简单封装,基于SCHED

    python fresher,轻拍. 在写后台服务时经常会遇到很多定时器的场景,threading.Timer类每实例化一个定时器会有一个新线程去执行,在客户端使用倒是没有问题,如果是服务器端定时器数 ...

  2. MongoDB Python官方驱动 PyMongo 的简单封装

    最近,需要使用 Python 对 MongodB 做一些简单的操作,不想使用各种繁重的框架.出于可重用性的考虑,想对 MongoDB Python 官方驱动 PyMongo 做下简单封装,百度一如既往 ...

  3. 孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5

    孤荷凌寒自学python第六十六天学习mongoDB的基本操作并进行简单封装5并学习权限设置 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十二天. 今天继续学习mongo ...

  4. 孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4

    孤荷凌寒自学python第六十五天学习mongoDB的基本操作并进行简单封装4 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十一天. 今天继续学习mongoDB的简单操作 ...

  5. 孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3

    孤荷凌寒自学python第六十四天学习mongoDB的基本操作并进行简单封装3 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第十天. 今天继续学习mongoDB的简单操作, ...

  6. 孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2

    孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第九天. 今天继续学习mongoDB的简单操作, ...

  7. 孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1

    孤荷凌寒自学python第六十二天学习mongoDB的基本操作并进行简单封装1 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第八天. 今天开始学习mongoDB的简单操作, ...

  8. python网页请求urllib2模块简单封装代码

    这篇文章主要分享一个python网页请求模块urllib2模块的简单封装代码. 原文转自:http://www.jbxue.com/article/16585.html 对python网页请求模块ur ...

  9. Golang 对MongoDB的操作简单封装

    使用MongoDB的Go驱动库 mgo,对MongoDB的操作做一下简单封装 初始化 操作没有用户权限的MongoDB var globalS *mgo.Session func init() { s ...

  10. 简单封装mongodb

    首先安装mongodb  npm i mongodb --save 简单封装,在modules目录下新建db.js var MongoClient=require('mongodb').MongoCl ...

随机推荐

  1. 【转载】 tensorflow batch_normalization的正确使用姿势

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/computerme/article/de ...

  2. 【转载】 日内瓦大学 & NeurIPS 2020 | 在强化学习中动态分配有限的内存资源

    原文地址: https://hub.baai.ac.cn/view/4029 ======================================================== [论文标 ...

  3. 【转载】 EdgeX Foundry试运行

    原文地址: https://www.cnblogs.com/charlieroro/p/14843335.html ========================================== ...

  4. PHP 红包功能代码

    前段时间被问这个问题,最近有空就写写啦,还是挺有趣的 首先做下抢红包方法分类: 对于发红包的人来说,一共有大致3类(其他的我暂时没想到,有想到可以联系我呀~) 一.拼手气红包个数不定(完全看运气) 二 ...

  5. SpringBoot优雅开发REST API最佳实践

    写在前面 博主最近在做一个数据服务的项目,而这个数据服务的核心就是对外暴露的API,值得高兴的这是一个从0开始的项目,所以终于不用受制于"某些历史"因素去续写各种风格的Contro ...

  6. 【牛客刷题】HJ4 字符串分隔

    题目链接 这个题目本身基本上是对语言熟悉程度的考察,没有什么别的逻辑可言: package main import ( "fmt" "strings" ) fu ...

  7. Win32 菜单添加复选标记和单选标记

    在菜单中添加复选标记用CheckMenuItem函数 CheckMenuItem函数原型: DWORD WINAPI CheckMenuItem( _In_ HMENU hMenu, //菜单句柄 _ ...

  8. One-for-All:上交大提出视觉推理的符号化与逻辑推理分离的新范式 | ECCV 2024

    通过对多样化基准的严格评估,论文展示了现有特定方法在实现跨领域推理以及其偏向于数据偏差拟合方面的缺陷.从两阶段的视角重新审视视觉推理:(1)符号化和(2)基于符号或其表示的逻辑推理,发现推理阶段比符号 ...

  9. TimeWheel算法介绍及在应用上的探索

    作者:来自 vivo 互联网服务器团队- Li Fan 本文从追溯时间轮算法的出现,介绍了时间轮算法未出现前,基于队列的定时任务实现,以及基于队列的定时任务实现所存在的缺陷.接着我们介绍了时间轮算法的 ...

  10. LLM大模型基础知识学习总结

    大家好,我是Edison. 在这个已经被AI大模型包围的时代,不了解一点大模型的基础知识和相关概念,可能出去聊天都接不上话.刚好近期我也一直在用GPT和GitHub Copilot,也刚好对这些基础知 ...