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秒后再改回来 importpymongo importlogging importdatetime importos importtime importtraceback importsys,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') #settoprintlogtoconsoleatthesametime 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) classMongoDB_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的相关参数 ifclient==None: logging.error( "MongoDB_Util.__init__:Initializemongodbclientobjecterror,host:%sport:%s"%( host,port)) raiseException("Initializemongodbclientobjecterror") try: admin_db=client['admin']#指定连接的库 admin_db.authenticate(user,password)#身份验证 self.persist_db=admin_db#赋值属性,通过该属性执行其他操作 exceptExceptionasexp: logging.error( "MongoDB_Util.__init__:Authticationfailed,host:%sport:%sdatabase:%suser:%spassword:%s"% (host,port,database,user,password)) raiseexp exceptExceptionasexp: logging.error( "MongoDB_Util.__init__:Exceptionhasoccured:%s"%str(sys.exc_info()[1])) raiseexp defupdate(self): #update方法,对mongodb执行update操作 tom=None try: ifself.persist_db==None: logging.error('MongoDB_Util.delete:Persistobjecthasnotbeeninitialised') raiseException('Persistobjecthasnotbeeninitialised') collection=self.persist_db['fuzzing_agent.configuration']#链接fuzzing_agent.configuration表 abc=collection.find({"default_value":"10.10.1.179"})#执行find命令 foriinabc: tom=i["default_value"] iftom=="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 exceptExceptionasexp: logging.error('Mongodb_Util.delete:Exceptionhasoccured:'+str(sys.exc_info()[1])) raiseexp defchange_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:Exceptionhasoccured:'+traceback.format_exc()) finally: returnresult if__name__=='__main__': whileTrue: try: ifchange_ip(mongodb_host='127.0.0.1'): #mongodb的ip地址 logging.debug('updateisdone!!!') else: logging.error('notupdatedone') except: logging.error('main:Exceptionhasoccured:'+traceback.format_exc()) finally: logging.debug("oneloop%s"%datetime.datetime.now())
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。