python-mongodb连接实现数据库数量监测

python和mongodb实现连接需要依靠一个pymongo的模块,通过对该模块的学习,开发了一个简单的运维工具-实时监测mongodb数据库数量的变化

工具代码地址:https://github.com/wayne-yhp/mongodb-pymongo-monitordb

pymongo使用讲解

  • 导入pymongo模块
  • 使用pymongo.client类建立连接
  • 建立连接后指定集合
import pymongo

#数据库没有开启认证,不需要输入账号密码时
url = "mongodb://127.0.0.1:27017"
client = pymongo.MongoClient(url)
db = client['test']  #test数据库名
col = db['col'] #col集合名

#数据库开启认证,需要输入帐号密码时
url = "mongodb://127.0.0.1:27017"
client = pymongo.MongoClient(url)
db = client['test']  #test数据库名
db.auth('test1','test1')  #权限验证,帐号和密码都是test1,验证失败会报错
col = db['col'] #col集合名

#利用数据库集合对象进行具体操作
col.count()  #查询数量
col.find()  #查询所有数据

更多操作详细请看:
http://api.mongodb.com/python/current/api/index.html

很多人可能会问为什么为什么上述代码是先切换到数据库在进行用户认证,这涉及mongodb的权限管理机制,你需要知道mongodb的用户只能在拥有权限的数据库中进行登陆,以数据库为基础单位,来对用户进行权限验证

在终端执行py脚本时接收参数,进行解析

依赖模块:

  • getopt
  • sys

在终端调用py脚本时,携带的所有参数都会以空格为分界符被携带在sys模块的argv属性中,这是一个列表,列表第一个元素是文件名,而getopt模块可以帮我们解析sys的argv参数,返回两个列表,分别是带选项的参数列表和不带选项的参数列表,方便我们进行判断分析

    #将sys.argv除去第一个元素的值传入
    opts, args =getopt.gnu_getopt(sys.argv[1:], "u:p:i:d:c:P:h", ["username=", "password=", "ip_address","database_name=", "collection=", "port=" ,"help"]) 

    addr = None
    db_name = None
    collection_name = None
    username = None
    password = None
    port = None

    # 单独存储带选项的参数
    for opt, arg in opts:
        if opt in('-u', '--username'):
            username = arg
        elif opt in('-p', '--password'):
            password = arg
        elif opt in('-i', '--ip_address'):
            addr = arg
        elif opt in('-d', '--database_name'):
            db_name = arg
        elif opt in('-c', '--collection'):
            collection_name = arg
        elif opt in ('-P', '--port'):
            port = arg

getopt.gnu_getopt()传入参数讲解

  • 第一个参数是需要进行分析的命令行字符串列表,即sys.argv[1:]
  • 第二个参数是一个字符串,代表短格式选项,规定命令行中可以出现哪些短选项,例如-i, -d, -u等等,字母后面加上:表示出现这个选项时,一定要在后面加上传入的参数,例如-u test1,反之不需要传入参数,例如-u
  • 第三个参数是一个字符串列表,与第二个参数作用类似,规定可以出现哪些长选项,号的作用等同于:,例如带参时–username test1,不带参时–username

PS:

  1. 监测工具使用方法(本人电脑操作系统为OS X)

    • 打开mongodb server

      打开mongodb server

    • 进入到脚本所在文件夹,执行入口脚本
      执行脚本

  2. 执行结果(每30s自动监测一次,断线会自动重连)

    • 查询结果写入count.txt文件中
      执行结果
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值