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中的tuple元组详细介绍
Feb 02 Python
Python基础之getpass模块详细介绍
Aug 10 Python
解决python3 json数据包含中文的读写问题
May 10 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
Python装饰器语法糖
Jan 02 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
python 弹窗提示警告框MessageBox的实例
Jun 18 Python
如何在Django配置文件里配置session链接
Aug 06 Python
python 直接赋值和copy的区别详解
Aug 07 Python
Django 后台带有字典的列表数据与页面js交互实例
Apr 03 Python
Python 为什么推荐蛇形命名法原因浅析
Jun 18 Python
Keras 在fit_generator训练方式中加入图像random_crop操作
Jul 03 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中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
php模板函数 正则实现代码
2012/10/15 PHP
php获取目标函数执行时间示例
2014/03/04 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
javascript下判断一个对象是否具有指定名称的属性的的代码
2010/01/11 Javascript
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
jQuery手动点击实现图片轮播特效
2020/04/20 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
JS沙箱模式实例分析
2017/09/04 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
基于layui的下拉列表的数据回显方法
2019/09/24 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
2020/06/05 Javascript
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
详解python 发送邮件实例代码
2016/12/22 Python
Python中的id()函数指的什么
2017/10/17 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
python numpy库np.percentile用法说明
2020/06/08 Python
详解HTML5 Canvas绘制时指定颜色与透明度的方法
2016/03/25 HTML / CSS
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
Linux的主要特性
2014/10/06 面试题
机械工程系毕业生求职信
2013/09/27 职场文书
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
班组长的岗位职责
2013/12/09 职场文书
校园招聘策划书
2014/01/09 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
委托书怎么写
2014/07/31 职场文书
捐款感谢信
2015/01/20 职场文书
2015年护士节活动总结
2015/02/10 职场文书
实习指导老师意见
2015/06/04 职场文书
vue实现登陆页面开发实践
2022/05/30 Vue.js
HTML实现仿Windows桌面主题特效的实现
2022/06/28 HTML / CSS