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 ...
随机推荐
- 国产芯片 —— 2023年龙芯最新的 3A6000 确实已经追上 2020年发布的 10代 i3酷睿 四核处理器
看新闻: https://news.cnblogs.com/n/752564/ 首先,龙芯3A6000已经有了i3酷睿10代的水平,这是十分可喜可贺的,可以说这个CPU的性能已经是国产CPU的天花板了 ...
- PyTorch+昇腾 共促AI生态创新发展
原文链接: https://mp.weixin.qq.com/s/s8jNzTo0DM_LjyUwYDVgGg ============================================ ...
- 个人17年购入的HP 暗影2pro笔记本开机掉电,电池无法充电,无法开机
相关链接: https://www.cnblogs.com/devilmaycry812839668/p/15228316.html 机器问题: 1. 电池时而能充电时而不能充电,有时候使用7天后不能 ...
- PHP 红包功能代码
前段时间被问这个问题,最近有空就写写啦,还是挺有趣的 首先做下抢红包方法分类: 对于发红包的人来说,一共有大致3类(其他的我暂时没想到,有想到可以联系我呀~) 一.拼手气红包个数不定(完全看运气) 二 ...
- 修复 Longhorn 卷挂载失败(”CentOS 7.6-'fsck' found errors on device“)
查看 Pod 日志 kubectl describe po clickhouse-0 -n clickhouse ...... #Events: # Type Reason Age From Mess ...
- SMU Summer 2023 Contest Round 15
SMU Summer 2023 Contest Round 15 A. AB Balance 其实就只会更改一次 #include <bits/stdc++.h> #define int ...
- 如何将Linux的NIC 名称更改为 eth0 而不是 enps33 或 enp0s25,只要几秒钟
概述 我们使用Linux系统,网卡名称通常都是eth0,但是有一些新的linux发行版,网卡名字 enps33 或 enp0s25. peng@ubuntu:~$ ifconfig ens33 Lin ...
- 电子行业MES系统流程图梳理
- 一文讲清楚static关键字
static能修饰的地方 静态变量 静态变量: 又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它:静态变量在内存中只存在一份. 实例变量: 每创建一个实例就 ...
- cnetos 9 安装巨坑!!! ssh无法登录
不管任何软件登录 或任何形式的ssh登录 仅开启了密钥的登录 没有账号密码 在安装引导设置root密码时候 下面有个复选框允许root密码ssh登录 勾选即可省略这些步骤 具体步骤: 找到合适的插入位 ...