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查询mysql,返回json的实例
Mar 26 Python
Python实现深度遍历和广度遍历的方法
Jan 22 Python
python如何实现视频转代码视频
Jun 17 Python
python 缺失值处理的方法(Imputation)
Jul 02 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
Jul 22 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
Django Python 获取请求头信息Content-Range的方法
Aug 06 Python
python与mysql数据库交互的实现
Jan 06 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
matplotlib绘制正余弦曲线图的实现
Feb 22 Python
python基于tkinter制作m3u8视频下载工具
Apr 24 Python
Python实现双向链表基本操作
May 25 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类的静态(static)方法和静态(static)变量使用介绍
2012/02/19 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
php递归方法实现无限分类实例代码
2014/02/28 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
使用javascript访问XML数据的实例
2006/12/27 Javascript
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
上传文件返回的json数据会被提示下载问题解决方案
2014/12/03 Javascript
JavaScript随机打乱数组顺序之随机洗牌算法
2016/08/02 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
AjaxUpLoad.js实现文件上传功能
2018/03/02 Javascript
Node.js中,在cmd界面,进入退出Node.js运行环境的方法
2018/05/12 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
js核心基础之构造函数constructor用法实例分析
2019/05/11 Javascript
简单分析js中的this的原理
2019/08/31 Javascript
在vue中阻止浏览器后退的实例
2019/11/06 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
python监控文件或目录变化
2016/06/07 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
Django更新models数据库结构步骤
2020/04/01 Python
使用简单的CSS3属性实现炫酷读者墙效果
2014/01/08 HTML / CSS
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
离婚协议书怎么写(范本参考)
2014/09/30 职场文书
公安四风对照检查材料思想汇报
2014/10/11 职场文书
《包身工》教学反思
2016/02/23 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
angular异步验证器防抖实例详解
2022/03/31 Javascript
Go语言怎么使用变长参数函数
2022/07/15 Golang