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 list 合并连接字符串的方法
Mar 09 Python
Python实现根据指定端口探测服务器/模块部署的方法
Aug 25 Python
Python字符编码判断方法分析
Jul 01 Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
快速解决安装python没有scripts文件夹的问题
Apr 03 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
tensorflow没有output结点,存储成pb文件的例子
Jan 04 Python
python安装读取grib库总结(推荐)
Jun 24 Python
TensorFlow-gpu和opencv安装详细教程
Jun 30 Python
python-jwt用户认证食用教学的实现方法
Jan 19 Python
Python源码解析之List
May 21 Python
Python基础之变量的相关知识总结
Jun 23 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
使用eAccelerator加密PHP程序
2008/10/03 PHP
joomla内置的表单验证功能使用方法
2010/06/11 PHP
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
PHP多进程简单实例小结
2019/11/09 PHP
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
基于javascript滚动图片具体实现
2013/11/18 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
Angular7创建项目、组件、服务以及服务的使用
2019/02/19 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
微信小程序Echarts图表组件使用方法详解
2019/06/25 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
Python实现自动登录百度空间的方法
2017/06/10 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
python判断输入日期为第几天的实例
2018/11/13 Python
python实现接口并发测试脚本
2019/06/25 Python
python使用sklearn实现决策树的方法示例
2019/09/12 Python
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
运动会广播稿200米
2014/01/27 职场文书
班班通项目实施方案
2014/02/25 职场文书
乡镇爱国卫生月活动总结
2014/06/25 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
独生子女证明范本
2015/06/19 职场文书
感恩教师主题班会
2015/08/12 职场文书
2016年青少年禁毒宣传教育活动总结(学校)
2016/04/05 职场文书
话题作文之呼唤
2019/12/18 职场文书
openstack云计算keystone组件工作介绍
2022/04/20 Servers