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程序设计有所帮助。