1. 程式人生 > 資料庫 >Python使用pymongo模組操作MongoDB的方法示例

Python使用pymongo模組操作MongoDB的方法示例

本文例項講述了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,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數學運算技巧總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總》

希望本文所述對大家Python程式設計有所幫助。