江西省城乡住房建设厅网站/怎么做百度推广的代理
记录一下pymongo的三种连接方式,避免踩坑,三种方式的区别根本是 账号权限问题
第一种:
管理员账号登录,admin数据库中的账号 such as:root-root
注意:admin账号是先校验账号密码,然后再切换数据库
from pymongo import MongoClientclient = 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) # idfile_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