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中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Python常用内置模块之xml模块(详解)
May 23 Python
Python3.X 线程中信号量的使用方法示例
Jul 24 Python
Python和Java进行DES加密和解密的实例
Jan 09 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Python协程 yield与协程greenlet简单用法示例
Nov 22 Python
使用pyinstaller逆向.pyc文件
Dec 20 Python
Python小整数对象池和字符串intern实例解析
Mar 21 Python
Python爬虫HTPP请求方法有哪些
Jun 03 Python
Python定义一个函数的方法
Jun 15 Python
Python+Appium新手教程
Apr 17 Python
python实现手机推送 代码也就10行左右
Apr 12 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
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
javascript 继承实现方法
2009/08/26 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
玩转方法:call和apply
2014/05/08 Javascript
一个支付页面DEMO附截图
2014/07/22 Javascript
学习jQuey中的return false
2015/12/18 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
vue.js $refs和$emit 父子组件交互的方法
2017/12/20 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
2018/12/03 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
[14:36]2014 DOTA2国际邀请赛中国区预选赛5.21 Orenda VS NE
2014/05/22 DOTA
python基于multiprocessing的多进程创建方法
2015/06/04 Python
python线程中同步锁详解
2018/04/27 Python
Python 修改列表中的元素方法
2018/06/26 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
Python实现多进程的四种方式
2019/02/22 Python
python里 super类的工作原理详解
2019/06/19 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
python自动发微信监控报警
2019/09/06 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
Pytorch实现LSTM和GRU示例
2020/01/14 Python
python 串行执行和并行执行实例
2020/04/30 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
Java如何调用外部Exe程序
2015/07/04 面试题
幼儿园教师考核制度
2014/02/01 职场文书
企业贷款委托书格式
2014/09/12 职场文书
2014副镇长民主生活会个人对照检查材料思想汇报
2014/09/30 职场文书
会议邀请函
2015/01/30 职场文书
2016年中秋节慰问信
2015/12/01 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
深入理解redis中multi与pipeline
2021/06/02 Redis