Python使用pymongo模塊操作MongoDB的方法示例
本文實例講述了Python使用pymongo模塊操作MongoDB的方法。分享給大家供大家參考,具體如下:
通過pymongo實現(xiàn)python對Mongodb的操作。
具體看python代碼
#!/usr/bin/python # coding=utf-8 #python實現(xiàn)對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的相關(guān)參數(shù) 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 #賦值屬性,通過該屬性執(zhí)行其他操作 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執(zhí)行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"}) #執(zhí)行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())
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python常見數(shù)據(jù)庫操作技巧匯總》、《Python數(shù)學(xué)運算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
python圖形用戶界面tkinter之標簽Label的使用說明
這篇文章主要介紹了python圖形用戶界面tkinter之標簽Label的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06python wav模塊獲取采樣率 采樣點聲道量化位數(shù)(實例代碼)
這篇文章主要介紹了python wav模塊獲取采樣率 采樣點聲道量化位數(shù),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01使用rpclib進行Python網(wǎng)絡(luò)編程時的注釋問題
這篇文章主要介紹了使用rpclib進行Python網(wǎng)絡(luò)編程時的注釋問題,作者講到了自己在編寫服務(wù)器時要用unicode注釋等需要注意的地方,需要的朋友可以參考下2015-05-05