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 ...
随机推荐
- python编程中的circular import问题
循环引入,circular import是编程语言中常见的问题,在C语言中我们可以使用宏定义来处理,在c++语言中我们可以使用宏定义和类的预定义等方式来解决,那么在python编程中呢? 其实在pyt ...
- 推荐一款.NET开源、功能强大的二维码生成类库
前言 在日常开发需求中,生成二维码以分享文本内容或跳转至指定网站链接等场景是比较常见的.今天大姚给大家分享一款.NET开源(MIT License).免费.简单易用.功能强大的二维码生成类库:QrCo ...
- Analysis of Set Union Algorithms 题解
题意简述 有一个集合,初始为空,你需要写一个数据结构,支持: 0 x 表示将 \(x\) 加入该集合,其中 \(x\) 为一由 \(\texttt{0} \sim \texttt{9}\) 组成的数字 ...
- 利用系统IO读取磁盘上指定BMP图片的宽和高,以及BMP图片的大小, 并输出到终端,要求图片名称通过命令行传递
/************************************************* * * file name:GetBmpInfo.c * author :momolyl@126. ...
- Linux的命令合集
Linux常用的命令 这里分享一个博客,里面有很丰富的Linux的常用指令. https://blog.csdn.net/qq_23329167/article/details/83856430. 然 ...
- Windows10 解决端口占用问题
netstat -ano|findStr 8080 taskkill -f -pid 8080 奥里给 秘制小汉堡安排
- python连接钉钉自动化提交OA审批
一.准备工作 1.安装阿里云支持包,点击跳转:https://open.dingtalk.com/document/resourcedownload/download-server-sdk 2.注册钉 ...
- ubuntu中sshd_config配置文件不存在
sshd_config配置文件不存在 导致外部无法连接ssh 解决方案: 1.完全卸载 sudo apt-get remove openssh-server openssh-client --purg ...
- KNN算法 0基础小白也能懂(附代码)
KNN算法 0基础小白也能懂(附代码) 原文链接 1.K近邻是啥 1968年,Cover 和 Hart 提出了最初的近邻法,思路是--未知的豆离哪种豆最近,就认为未知豆和该豆是同一种类. 近邻算法的定 ...
- Json转实体类问题
背景:使用一个实体类,将json及xml转成对应的实体类 Transformers.fromJson 将json映射成对应的实体类, 原本已经测试,传xml是可以的,传的有字段及list<E&g ...