Python使用pymongo模块操作MongoDB的方法示例


Posted in Python onJuly 20, 2018

本文实例讲述了Python使用pymongo模块操作MongoDB的方法。分享给大家供大家参考,具体如下:

通过pymongo实现python对Mongodb的操作。

具体看python代码

#!/usr/bin/python
# coding=utf-8
#python实现对MongoDB的操作
#需要安装python2、pymongo、安装pymongo可能需要pip,logging打印日志
#改脚本主要功能就是每5秒改一次mongodb中存储的ip,5秒后再改回来
import pymongo
import logging
import datetime
import os
import time
import traceback
import sys,gc
# 初始化logging
logging.basicConfig(level=logging.NOTSET,
          format='%(asctime)s %(filename)s[line:%(lineno)d] [%(levelname)s] %(message)s',
          datefmt='%Y-%m-%d %H:%M:%S',
          filename='clear_screenshot_based_on_db.log',
          filemode='a')
# set to print log to console at the same time
console = logging.StreamHandler()
console.setLevel(logging.NOTSET)
formatter = logging.Formatter('%(asctime)s %(name)s [%(levelname)s] %(message)s')
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
class MongoDB_Util():
#写一个类,用于实例化pymongo对象以及对mongo的增删改查
  def __init__(self, user, password, host, port, database, max_pool_size=2):
    try:
      client = pymongo.MongoClient(host=host, port=port, maxPoolSize=max_pool_size)
#实例化对象,需要mongo的相关参数
      if client == None:
        logging.error(
          "MongoDB_Util.__init__ : Initialize mongodb client object error,host:%s port:%s" % (
            host, port))
        raise Exception("Initialize mongodb client object error")
      try:
        admin_db = client['admin']  #指定连接的库
        admin_db.authenticate(user, password) #身份验证
        self.persist_db = admin_db  #赋值属性,通过该属性执行其他操作
      except Exception as exp:
        logging.error(
          "MongoDB_Util.__init__ : Authtication failed,host:%s port:%s database:%s user:%s password:%s" %
          (host, port, database, user, password))
        raise exp
    except Exception as exp:
      logging.error(
        "MongoDB_Util.__init__ : Exception has occured : %s" % str(sys.exc_info()[1]))
      raise exp
  def update(self):
#update方法,对mongodb执行update操作
    tom = None
    try:
      if self.persist_db == None:
        logging.error('MongoDB_Util.delete : Persist object has not been initialised')
        raise Exception('Persist object has not been initialised')
      collection = self.persist_db['fuzzing_agent.configuration']  #链接fuzzing_agent.configuration表
      abc=collection.find({"default_value" : "10.10.1.179"})   #执行find命令
      for i in abc:
        tom = i["default_value"]
      if tom == "10.10.1.179":
    #判断该值是否为179,如果是则通过update改为134
        collection.update({"default_value" : "10.10.1.179"},
                 {'$set':{'default_value': '10.10.1.134'}})
        collection.update({"default_value" : "10.10.1.179:/run/media/root/disk01/fuzzing"},
                 {'$set':{"default_value" :"10.10.1.134:/run/media/root/disk01/fuzzing"}})
        logging.debug("179 > 134")
        time.sleep(5)
      else:
        collection.update({"default_value" : "10.10.1.134"},
                 {'$set':{'default_value': '10.10.1.179'}})
        collection.update({"default_value" : "10.10.1.134:/run/media/root/disk01/fuzzing"},
                 {'$set':{"default_value" :"10.10.1.179:/run/media/root/disk01/fuzzing"}})
        logging.debug("134 > 179")
        time.sleep(5)
      return
    except Exception as exp:
      logging.error('Mongodb_Util.delete : Exception has occured : ' + str(sys.exc_info()[1]))
      raise exp
def change_ip(mongodb_host) :
  result = False
  try :
    mongo_util = MongoDB_Util('username', 'password', mongodb_host, 27017, 'admin',max_pool_size = 2) #用户名,密码,mongodb的Ip,端口,连接库,连接池
    mongo_util.update()
    result = True
  except :
    logging.error('change_ip: Exception has occured : ' + traceback.format_exc())
  finally:
    return result
if __name__ == '__main__' :
  while True :
    try :
      if change_ip(mongodb_host = '127.0.0.1') :



#mongodb的ip地址
        logging.debug('update is done !!!')
      else :
        logging.error('not update done')
    except :
      logging.error('main : Exception has occured : ' + traceback.format_exc())
    finally:
      logging.debug("one loop %s" %datetime.datetime.now())

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中列表的一些基本操作知识汇总
May 20 Python
python使用urllib2提交http post请求的方法
May 26 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
Python用Try语句捕获异常的实例方法
Jun 26 Python
简单了解django缓存方式及配置
Jul 19 Python
详解numpy矩阵的创建与数据类型
Oct 18 Python
pycharm 激活码及使用方式的详细教程
May 12 Python
Python常见反爬虫机制解决方案
Jun 01 Python
python3中calendar返回某一时间点实例讲解
Nov 18 Python
python 使用OpenCV进行简单的人像分割与合成
Feb 02 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 Python
Python闭包函数定义与用法分析
Jul 20 #Python
Django rest framework工具包简单用法示例
Jul 20 #Python
Django 中使用流响应处理视频的方法
Jul 20 #Python
Python实现手写一个类似django的web框架示例
Jul 20 #Python
python 实现求解字符串集的最长公共前缀方法
Jul 20 #Python
python实现求两个字符串的最长公共子串方法
Jul 20 #Python
Django基础知识与基本应用入门教程
Jul 20 #Python
You might like
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
Yii中render和renderPartial的区别
2014/09/03 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
php获取flash尺寸详细数据的方法
2016/11/12 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
微信和qq时间格式模板实例详解
2016/10/21 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
详解Javascript数据类型的转换规则
2016/12/12 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
JavaScript中.min.js和.js文件的区别讲解
2019/02/13 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
如何通过JS实现日历简单算法
2020/10/14 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
Python中文编码那些事
2014/06/25 Python
python与C互相调用的方法详解
2017/07/14 Python
python实现数据写入excel表格
2018/03/25 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
2019/06/19 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
全球度假村:Club Med
2017/11/27 全球购物
Sandro Paris美国官网:典雅别致的法国时尚服饰品牌
2017/12/26 全球购物
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
师范大学音乐表演专业求职信
2013/10/23 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
JavaScript文档对象模型DOM
2021/11/20 Javascript
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers