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列表操作使用示例分享
Feb 21 Python
Python中请使用isinstance()判断变量类型
Aug 25 Python
在Python的一段程序中如何使用多次事件循环详解
Sep 07 Python
python爬虫使用cookie登录详解
Dec 27 Python
python分割一个文本为多个文本的方法
Jul 22 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
Dec 13 Python
Python计算公交发车时间的完整代码
Feb 12 Python
使用python实现多维数据降维操作
Feb 24 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
windows下的pycharm安装及其设置中文菜单
Apr 23 Python
提高python代码运行效率的一些建议
Sep 29 Python
python 中关于pycharm选择运行环境的问题
Oct 31 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
php实现留言板功能(会话控制)
2017/05/23 PHP
对象的类型:本地对象(1)
2006/12/29 Javascript
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
javasript实现密码的隐藏与显示
2015/05/08 Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
2016/04/07 Javascript
JavaScript实现图片懒加载(Lazyload)
2016/11/28 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
three.js实现炫酷的全景3D重力感应
2018/12/30 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
如何根据业务封装自己的功能组件
2019/04/19 Javascript
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
jquery 时间戳转日期过程详解
2019/10/12 jQuery
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
Vue混入mixins滚动触底的方法
2019/11/22 Javascript
python中函数传参详解
2016/07/03 Python
python算法表示概念扫盲教程
2017/04/13 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
使用Python 统计高频字数的方法
2019/01/31 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
使用Python刷淘宝喵币(低阶入门版)
2019/10/30 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
2019/11/26 Python
python重要函数eval多种用法解析
2020/01/14 Python
Python自带的IDE在哪里
2020/07/01 Python
CSS3 按钮边框动画的实现
2020/11/12 HTML / CSS
HTML5实现预览本地图片
2016/02/17 HTML / CSS
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
村干部承诺书
2014/03/28 职场文书
专家推荐信模板
2014/05/09 职场文书
个人求职信范文
2014/05/24 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
施工单位工程部经理岗位职责
2015/04/09 职场文书