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目录操作之python遍历文件夹后将结果存储为xml
Jan 27 Python
python基础教程之自定义函数介绍
Aug 29 Python
Python安装第三方库的3种方法
Jun 21 Python
Python实现基本线性数据结构
Aug 22 Python
python实现八大排序算法(1)
Sep 14 Python
Python机器学习之决策树算法
Dec 22 Python
Python 限制线程的最大数量的方法(Semaphore)
Feb 22 Python
Python实现数据结构线性链表(单链表)算法示例
May 04 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 Python
python实现图片转字符画
Feb 19 Python
python实现b站直播自动发送弹幕功能
Feb 20 Python
python实现自动化群控的步骤
Apr 11 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中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
PHP strip_tags保留多个HTML标签的方法
2016/05/22 PHP
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
2014/06/06 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
2016/08/15 Javascript
Angular1.x自定义指令实例详解
2017/03/01 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
Javascript实现动态时钟效果
2018/11/17 Javascript
微信小程序文章详情页跳转案例详解
2019/07/09 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
详解Python中的文本处理
2015/04/11 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
在python中bool函数的取值方法
2018/11/01 Python
tensorflow 环境变量设置方式
2020/02/06 Python
Python如何脚本过滤文件中的注释
2020/05/27 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
HTML5 input新增type属性color颜色拾取器的实例代码
2018/08/27 HTML / CSS
法国综合购物网站:RueDuCommerce
2016/09/12 全球购物
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
高级护理实习生自荐信
2013/09/28 职场文书
服装设计专业自荐书范文
2013/12/30 职场文书
致跳远运动员加油稿
2014/02/11 职场文书
禁烟标语大全
2014/06/11 职场文书
2015年财务经理工作总结
2015/05/13 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python