Python使用pymongo模块操作MongoDB的方法示例
作者:铠甲巨人 发布时间:2023-03-26 08:58:46
标签: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, 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程序设计有所帮助。
来源:http://www.cnblogs.com/ArmoredTitan/p/Mongodb.html
0
投稿
猜你喜欢
- 前言最近在学习python-igraph,发现其实学习一种全新的语言看官方的文档是真的很有帮助,这次我的大部分python代码的完成都是靠着
- BluePrint是一个非常成熟也非常流行的CSS框架,很多网站和wordpress基于Blueprint搭建前端结构。最近,bluepri
- ASP里两种常用的生成文件的方式是:利用ADODB.Stream生成文件和利用Scripting.FileSystemObject生成文件1
- 本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL
- 用Python写脚本也有一段时间了,经常操作数据库(MySQL),现在就整理下对各类数据库的操作,如后面有新的参数会补进来,慢慢完善。一,p
- 八九年前,我在公司做设计,当时就已经做到技术总监,Photoshop是自学的,当时觉得全世界比我Photoshop强的人也不在多数。七年前,
- np.random模块常用的一些方法介绍名称作用numpy.random.rand(d0, d1, …, dn)生成一
- 本文实例讲述了Python模块的制作方法。分享给大家供大家参考,具体如下:1 目的利用setup.py将框架安装到python环境中,作为第
- 文章介绍内容:操作MySQL数据库:创建MySQL数据表;向表中插入记录;其他数据库操作。面试题:如何创建MySQL数据表?如何向MySQL
- 说明eventlet是一个必备工具,经常用,绿化原理有点忘记了,重新复习一遍.三个主要问题 1. 绿化的原理是什么?2. 绿化怎么
- 1.学习sql之前回忆一下,什么是变量?变量:能存储数据的值。变量是一块内存空间的表示。数组一连串空间变量是存储数据的容器(通俗讲)2.变量
- 本文实例为大家分享了vue iview动态新增和删除的具体代码,供大家参考,具体内容如下<Form ref="capsule
- '================================================ '
- 目录一.models数据库映射二.serializers序列化三.url路由四.Views视图类一.models数据库映射from djan
- 当然,页面最好不要刷新,但是,拷贝一下浏览器的链接,又希望是下次能定位到你播发的那个视频。方法很简单,改变一下 url 的 fragment
- using System; using System.Collections; using System.Configuration; us
- 最近使用python里的matplotlib库绘图,想在代码结束时显示图片看看,结果图片一闪而过,附上我原来代码:import matplo
- 1. 前言数组和矩阵是数值计算的基础元素。目前为止,我们都是使用NumPy的ndarray数据结构来表示数组,这是一种同构的容器,用于存储数
- 原文地址:30 Days of Mootools 1.2 Tutorials - Day 5 - Event HandlingMooTool
- 组件值校验,即在组件值变化时判断是否满足校验逻辑,若不满足校验逻辑,可以拿到校验错误信息进行错误提示或其他逻辑处理。声明 valueVali