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函数可变参数定义及其参数传递方式实例详解
May 25 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
May 19 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
python调用webservice接口的实现
Jul 12 Python
django url到views参数传递的实例
Jul 19 Python
Python高级特性——详解多维数组切片(Slice)
Nov 26 Python
PyTorch里面的torch.nn.Parameter()详解
Jan 03 Python
Pycharm中Python环境配置常见问题解析
Jan 16 Python
如何定义TensorFlow输入节点
Jan 23 Python
Pyside2中嵌入Matplotlib的绘图的实现
Feb 22 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
ThinkPHP标签制作教程
2014/07/10 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
php设计模式之工厂模式用法经典实例分析
2019/09/20 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
Javascript学习笔记之 函数篇(二) : this 的工作机制
2014/06/24 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
nodejs如何获取时间戳与时间差
2016/08/03 NodeJs
Bootstrap3 datetimepicker控件使用实例
2016/12/13 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
JS轮播图实现简单代码
2021/02/19 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
2020/08/18 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python处理XML格式数据的方法详解
2017/03/21 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
HTML5单页面手势滑屏切换原理
2016/03/21 HTML / CSS
社会实践先进工作者事迹材料
2014/05/06 职场文书
计算机应用专业毕业生求职信
2014/06/03 职场文书
爱护草坪标语
2014/06/24 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书