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获取单个程序CPU使用情况趋势图
Mar 10 Python
举例区分Python中的浅复制与深复制
Jul 02 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 Python
python3.4实现邮件发送功能
May 28 Python
Pycharm无法使用已经安装Selenium的解决方法
Oct 13 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
selenium+python自动化测试之鼠标和键盘事件
Jan 23 Python
python实现批量文件重命名
Oct 31 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
Python matplotlib实时画图案例
Apr 23 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
Python如何利用pandas读取csv数据并绘图
Jul 07 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 array的学习笔记
2012/05/16 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
url 特殊字符 传递参数解决方法
2010/01/01 Javascript
js中巧用cssText属性批量操作样式
2011/03/13 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
JavaScript中的关联数组问题
2015/03/04 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
为JQuery EasyUI 表单组件增加焦点切换功能的方法
2017/04/13 jQuery
Angular 4.0学习教程之架构详解
2017/09/12 Javascript
浅谈vue项目打包优化策略
2018/09/29 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
vue.js中导出Excel表格的案例分析
2019/06/11 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
JavaScript字符串转数字的简单实现方法
2020/11/27 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
详解java调用python的几种用法(看这篇就够了)
2020/12/10 Python
详解Python中的文件操作
2021/01/14 Python
详解Pymongo常用查询方法总结
2021/01/29 Python
是否有自动比较结构的方法
2015/06/03 面试题
what is the difference between ext2 and ext3
2015/08/25 面试题
大客户销售经理职责
2013/12/04 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
数控专业自荐书范文
2014/03/16 职场文书
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
话题作文之呼唤
2019/12/18 职场文书