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探索之自定义实现线程池
Oct 27 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
Mar 18 Python
python识别图像并提取文字的实现方法
Jun 28 Python
Python 实用技巧之利用Shell通配符做字符串匹配
Aug 23 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
Feb 17 Python
python GUI库图形界面开发之PyQt5日期时间控件QDateTimeEdit详细使用方法与实例
Feb 27 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
jupyter notebook清除输出方式
Apr 10 Python
Python如何重新加载模块
Jul 29 Python
Django-silk性能测试工具安装及使用解析
Nov 28 Python
PyTorch dropout设置训练和测试模式的实现
May 27 Python
Python  序列化反序列化和异常处理的问题小结
Dec 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
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
基于thinkPHP实现的微信自定义分享功能示例
2016/09/23 PHP
PHP命名空间与自动加载类详解
2018/09/04 PHP
PHP消息队列实现及应用详解【队列处理订单系统和配送系统】
2019/05/20 PHP
PHP进阶学习之Geo的地图定位算法详解
2019/06/19 PHP
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
jQuery中:nth-child选择器用法实例
2014/12/31 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
Python中常用操作字符串的函数与方法总结
2016/02/04 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
Django如何实现网站注册用户邮箱验证功能
2019/08/14 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
python 调试冷知识(小结)
2019/11/11 Python
用python解压分析jar包实例
2020/01/16 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
python是怎么被发明的
2020/06/15 Python
HTML5 视频播放(video),JavaScript控制视频的实例代码
2018/10/08 HTML / CSS
PHP数据运算类型都有哪些
2013/11/05 面试题
超市营业员求职简历的自我评价
2013/10/17 职场文书
会计电算化大学生职业规划书
2014/02/05 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
领导班子整改方案和个人整改措施
2014/10/25 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
运动会3000米加油稿
2015/07/21 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书