連接本機或局域網部署的mongodb時可以用以下方法:
1 from urllib import parse 2 from pymongo import MongoClient 3 4 host = '*.*.*.*' 5 username = '*****' 6 password = '****' 7 passwd = parse.quote(password) # 對密碼先進行編碼 8 port = '3717' 9 mongo_url = 'mongodb://{0}:{1}@{2}:{3}'.format(username, passwd, host, port) 10 clinet = MongoClient(mongo_url)
但連接集群部署的mongodb時,再用以上代碼連接,會報錯:pymongo.errors.OperationFailure: not authorized
因為mongoDB有不同的認證機制,3.0版本以后采用的是'SCRAM-SHA-1', 之前的版本采用的是'MONGODB-CR',所以首先需要查看自己連接的mongodb的版本號
需要更改連接方式,代碼如下:
from pymongo import MongoClient host = '**.**.**.**' username = '*****' password = '....' port = '3717' db = 'test' mongo_url = 'mongodb://{0}:{1}@{2}:{3}/?authSource={4}&authMechanism=SCRAM-SHA-1'.format(username, password, host, port,db) clinet = MongoClient(mongo_url)
authMechanism參數根據自己的版本號,寫對應的值就可以了