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 测试实现方法
Dec 24 Python
python获取android设备的GPS信息脚本分享
Mar 06 Python
对于Python的Django框架使用的一些实用建议
Apr 03 Python
讲解Python中for循环下的索引变量的作用域
Apr 15 Python
Python温度转换实例分析
Jan 17 Python
unittest+coverage单元测试代码覆盖操作实例详解
Apr 04 Python
Python格式化输出%s和%d
May 07 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
Nov 20 Python
python 利用pandas将arff文件转csv文件的方法
Feb 12 Python
对Python强大的可变参数传递机制详解
Jun 13 Python
Python for循环通过序列索引迭代过程解析
Feb 07 Python
用python批量解压带密码的压缩包
May 31 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提取中文首字母
2008/04/09 PHP
php 求质素(素数) 的实现代码
2011/04/12 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
2011/07/12 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
css transform 3D幻灯片特效实现步骤解读
2013/03/27 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
js转化毫秒为时间格式代码
2014/04/10 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
JavaScript中window.open用法实例详解
2015/04/15 Javascript
javascript:void(0)点击登录没反应怎么解决
2015/11/13 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
vue scroller返回页面记住滚动位置的实例代码
2018/01/29 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
关于vue3默认把所有onSomething当作v-on事件绑定的思考
2020/05/15 Javascript
js实现浏览器打印功能的示例代码
2020/07/15 Javascript
python操作MongoDB基础知识
2013/11/01 Python
Python的subprocess模块总结
2014/11/07 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
Python3 Random模块代码详解
2017/12/04 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
美国婴儿用品店:Babies”R”Us
2017/10/12 全球购物
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
应届护士求职信范文
2014/01/26 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
Python机器学习之基于Pytorch实现猫狗分类
2021/06/08 Python