python操作mongo实例
- # coding:utf-8
- """
- mongo操作工具
- """
- from pymongo import MongoClient
- MONGO_HOST, MONGO_PORT, MONGO_DB, MONGO_TABLE = '127.0.0.1', '', 'test_db', 'teat_tb'
- class MongoUtils:
- """
- 链接mongoDB,进行各种操作
- """
- def __init__(self, host=MONGO_HOST, port=MONGO_PORT, db_name=MONGO_DB):
- """
- 初始化对象,链接数据库
- :param host: mongo数据库所在服务器地址
- :param port: mongo数据库端口
- :param db_name: 数据库的名称
- :return: 无返回值
- """
- try:
- self.client = None
- self.client = MongoClient(host, port)
- self.database = self.client.get_database(db_name)
- self.collection = None
- except Exception as e:
- self.close_conn()
- print('init mongo bar failed: %s' % e)
- def change_collection(self, table_name=MONGO_TABLE):
- """切换表"""
- self.collection = self.database.get_collection(table_name)
- def count_info(self, table_name=MONGO_TABLE, filter_dict=None):
- """
- 查找表记录条数,默认返回0
- :param table_name: str 表名
- :param filter_dict: dict 过滤条件
- :return: int 表记录条数
- """
- tab_size = 0
- try:
- self.collection = self.database.get_collection(table_name)
- tab_size = self.collection.find(filter_dict).count()
- return tab_size
- except Exception as e:
- print('get table size failed: %s' % e)
- finally:
- return tab_size
- def update_info(self, filter_dict, update_dict, insert=False, multi=False):
- """
- 更新表记录,默认返回false
- :param filter_dict: dict 过滤条件,如{'campaignId':{'$in':[1,2,3]}}
- :param update_dict: dict 更新的字段,如{'$set':{status_key:0,'campaign.status':1},{'$unset':'campaign.name':'test_camp'}}
- :param insert: bool 如果需要更新的记录不存在是否插入
- :param multi: bool 是否更新所有符合条件的记录, False则只更新一条,True则更新所有
- :return: bool 是否更新成功
- """
- result = False
- try:
- self.collection.update(filter_dict, update_dict, insert, multi)
- result = True
- print("[INFO] update success!")
- except Exception as e:
- print('update failed: %s' % e)
- finally:
- return result
- def insert_info(self, insert_date):
- """
- 更新表记录,默认返回false
- :param insert_date: dict 插入的数据,如{'campaignId':{'$in':[1,2,3]}}
- :return: bool 是否更新成功
- """
- result = False
- try:
- self.collection.insert(insert_date)
- result = True
- print("insert success!")
- except Exception as e:
- print('insert failed: %s' % e)
- finally:
- return result
- def delete_info(self, filter_date):
- """
- 更新表记录,默认返回false
- :param filter_date: dict 删除数据的条件,如{'campaignId':{'$in':[1,2,3]}}
- :return: bool 是否更新成功
- """
- result = False
- try:
- self.collection.remove(filter_date)
- result = True
- print("remove success!")
- except Exception as e:
- print('remove failed: %s' % e)
- finally:
- return result
- def find_one_info(self, filter_dict, return_dict):
- """
- 查找一条表记录,默认返回空字典
- :param filter_dict: dict 过滤条件如{'campaignId':123}
- :param return_dict: dict 返回的字段如{'campaign.status':1,'updated':1,'_id':0}
- :return: dict 查找到的数据
- """
- result = {}
- try:
- result = self.collection.find_one(filter_dict, return_dict)
- except Exception as e:
- print('find data failed: %s' % e)
- finally:
- return result
- def find_multi_info(self, filter_dict, return_dict, limit_size=0, skip_index=0):
- """
- 查找多条表记录,默认返回空数组
- :param filter_dict: dict filter_dict: 过滤条件如{'campaignId':123}
- :param return_dict: dict 返回的字段如{'campaign.status':1,'updated':1,'_id':0}
- :param limit_size: int 限定返回的数据条数
- :param skip_index: int 游标位移
- :return: list 查询到的记录组成的列表,每个元素是一个字典
- """
- result = []
- try:
- if not limit_size:
- if not skip_index:
- result = self.collection.find(filter_dict, return_dict)
- else:
- result = self.collection.find(filter_dict, return_dict).skip(skip_index)
- else:
- if not skip_index:
- result = self.collection.find(filter_dict, return_dict).limit(limit_size)
- else:
- result = self.collection.find(filter_dict, return_dict).skip(skip_index).limit(limit_size)
- except Exception as e:
- print('find data failed: %s' % e)
- finally:
- return result
- def close_conn(self):
- """
- 关闭数据库链接
- :return: 无返回值
- """
- if self.client:
- self.client.close()
python操作mongo实例的更多相关文章
- Python操作Mysql实例代码教程在线版(查询手册)_python
实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding ...
- Python操作Mysql实例代码教程在线版(查询手册)
本文介绍了Python操作MYSQL.执行SQL语句.获取结果集.遍历结果集.取得某个字段.获取表字段名.将图片插入数据库.执行事务等各种代码实例和详细介绍,代码居多,是一桌丰盛唯美的代码大餐 实 ...
- 利用python操作mrjob实例---wordcount
网上利用java实现mr操作实例相对较多,现将python实现mr操作实例---Wordcount分享如下: 在操作前,需要作如下准备: 1.确保linux系统里安装有python3.5,pyt ...
- python操作mongo脚本
#!/usr/bin/python# -*- coding: utf-8 -*- import sysimport osimport jsonfrom pymongo import MongoClie ...
- Python操作Mongo数据库
连接数据库 import pymongo # 连接到数据库,以下两种方式均可 client = pymongo.MongoClient(host='localhost', port=27017) cl ...
- python操作mysql实例
#coding=utf-8 import MySQLdb # 打开数据库连接 db = MySQLdb.connect(host='localhost',user='root',passwd='',d ...
- python 操作mongo
1. 导包: import pymongo 2. 建立连接 client = pymongo.MongoClient("127.0.0.1",27017) 3. 获取数据库 db ...
- python操作mongodb实例
安装pymongo扩展 import pymongo; client = pymongo.MongoClient(host='10.48.176.170',port=27017); db = clie ...
- Python学习笔记(五)之Python操作Redis、mysql、mongodb数据库
操作数据库 一.数据库 数据库类型主要有关系型数据库和菲关系型数据库. 数据库:用来存储和管理数的仓库,数据库是通过依据“数据结构”将数据格式化,以记录->表->库的关系存储.因此数据查询 ...
随机推荐
- 在windows系统下,配置vue项目一键启动文件
我的项目由客户端.后台管理.数据库和服务器三部分组件,每次启动项目都要一个一个启动,挺麻烦的,现在写一个.bat文件来批处理命令. 这个是我的启动文件内容. 第一行运行的我wampServer服务器, ...
- java文件分割及合并
分割设置好分割数量,根据源文件大小来把数据散到子文件中代码如下; package word; import java.io.File; import java.io.FileInputStream; ...
- mac自带功能超详细介绍
mac自带的超实用的功能分享给大家,包含自带的Spotlight(聚焦) 计算器功能,预览的 PDF 压缩功能,切换同一应用的不同窗口等,让您的工作更加轻松. 1.Spotlight(聚焦) 计算器功 ...
- 敌兵布阵 HDU - 1166 板子题
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> ...
- python的优先级
在编写程序时,我遇到麻烦!怎么找都找不到bug 最终我发现了是我搞错了运算符优先级 位运算要在加减后面(这可真奇怪) eg 10-10^11=11!!! 还是多加括号的好
- PGET,一个简单、易用的并行获取数据框架
使用场景 当我们的服务收到一个请求后,需要大量调用下游服务获取业务数据,然后对数据进行转换.计算后,响应给请求方. 如果我们采用串行获取下游数据,势必会增加响应时长,降低接口的qps.如果是并行获取下 ...
- 54.Python中Meta类常见的配置
对于一些模型级别的配置.我们可以通过在模型中定义一个类,叫做Meta.然后在这个类中添加一些属性来控制模型的作用. 注意:添加的这个类一定要是Meta,否者的话Django就会不能够识别. from ...
- Winform递归绑定树节点
/// <summary> /// 绑定树节点 /// </summary> /// <param name="pid"></param& ...
- MySql快速入门(四)
在之前我们对MySql已经有了基本的了解,接下来我们就来接触MySql的分库分表,请往下阅读: 分库分表之MyCat实现 分库分表介绍: 随着微服务这种架构的兴起,我们应用从一个完整的大的应用,切分为 ...
- 858. Prim算法求最小生成树(模板)
给定一个n个点m条边的无向图,图中可能存在重边和自环,边权可能为负数. 求最小生成树的树边权重之和,如果最小生成树不存在则输出impossible. 给定一张边带权的无向图G=(V, E),其中V表示 ...