记录一下pymongo的三种连接方式,避免踩坑,三种方式的区别根本是 账号权限问题


第一种:

管理员账号登录,admin数据库中的账号 such as:root-root

注意:admin账号是先校验账号密码,然后再切换数据库

from pymongo import MongoClient


client = MongoClient('mongodb://{0}:{1}@{2}:{3}'.format(
                MONGODB_ACCOUNT, MONGODB_PASS, MONGODBIP, MONGODBPORT))
db = client[DATABASE]

第二种:

        数据库下的专属账号,不具备其他数据库登录权限

      先连接mongo,选择数据库,最后再单独校验账号密码

import pymongo



# 先切换数据库
client = pymongo.MongoClient(ip, port)

db = self.client[db]

db.authenticate(user, password)

第三种:

        数据库下的专属账号,不具备其他数据库登录权限

        mongoengine的方式, 常用于web框架中

from mongoengine import *


connect(DataBase, host = MongodbIP, username =Mongodb_account, password = Mongodb_pass)


# 需要自定义mongo中表的模型
class File(Document):
    """MongoDb存储文件

    Args:
        Document ([type]): [description]
    """
    air_line_id = StringField(required = True)  # id
    file_name = StringField()  # 文件名称
    filemd5 = StringField(required = True)  # 文件名称md5值
    kml = FileField()  # 照片
    published = DateTimeField(default=datetime.datetime.now)  # 创建时间
    meta = {'collection': 'kml_file','indexes': [
        {'fields': ('air_line_id', 'filemd5'), 'unique': True}
    ]}


def _test():
    # 以对象的形式操作数据库
    if File.objects(Q(air_line_id=air_line_id) & Q(filemd5=_filemd5)):
        pass

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐