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

作者:铠甲巨人 时间:2023-03-26 08:58:46 

本文实例讲述了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

标签:Python,pymongo模块,MongoDB
0
投稿

猜你喜欢

  • 解决mybatis 数据库date 与 java中Date类型映射问题

    2024-01-23 04:59:05
  • 解决pycharm下载库时出现Failed to install package的问题

    2021-07-30 14:15:49
  • 两级联动select刷新后其值保持不变的实现方法

    2023-11-05 11:39:33
  • python持久化存储文件操作方法

    2022-06-10 00:59:34
  • python处理PHP数组文本文件实例

    2023-11-09 23:56:03
  • asp用正则解析远程图片地址,用XMLHTTP将其保存

    2007-10-26 12:34:00
  • python 爬取国内小说网站

    2022-11-30 16:02:04
  • python3中宏HAVE_VFORK的使用

    2021-05-22 07:22:21
  • 重构Python代码的六个实例

    2023-08-07 02:10:14
  • 详谈vue中router-link和传统a链接的区别

    2024-04-09 10:46:05
  • Spring 数据库连接池(JDBC)详解

    2024-01-22 19:00:36
  • Go语言的反射机制详解

    2024-05-09 14:58:51
  • 使用Python编写简单的端口扫描器的实例分享

    2023-07-20 20:18:32
  • php实现简单的权限管理的示例代码

    2024-05-05 09:18:37
  • 分享一下SQL Server执行动态SQL的正确方式

    2024-01-14 00:17:56
  • Django多层嵌套ManyToMany字段ORM操作详解

    2023-07-01 02:26:28
  • Pandas使用分隔符或正则表达式将字符串拆分为多列

    2022-03-05 13:52:54
  • python3 selenium自动化 frame表单嵌套的切换方法

    2022-05-15 10:26:57
  • 用Python Flask创建简洁高效的URL短链接服务

    2022-10-12 16:21:49
  • Python正则表达式使用经典实例

    2022-04-29 01:22:03
  • asp之家 网络编程 m.aspxhome.com