Python Can';t使用MongoEngine进行身份验证。PyMongo工作。如何让MongoEngine进行身份验证?
我正在尝试使用mongoengine.connect()对MongoDB数据库进行身份验证。当我使用pymongo.MongoClient()时,代码工作得非常好,但是mongoenine.connect()抛出了以下错误:Python Can';t使用MongoEngine进行身份验证。PyMongo工作。如何让MongoEngine进行身份验证?,python,mongodb,pymongo,mongoengine,Python,Mongodb,Pymongo,Mongoengine,我正在尝试使用mongoengine.connect()对MongoDB数据库进行身份验证。当我使用pymongo.MongoClient()时,代码工作得非常好,但是mongoenine.connect()抛出了以下错误: pymongo.errors.OperationFailure: command createRole requires authentication 我相信连接参数是相同的,MongoEngine使用PyMongo进行连接,所以我对这里的错误感到困惑 我打印了PyMon
pymongo.errors.OperationFailure: command createRole requires authentication
我相信连接参数是相同的,MongoEngine使用PyMongo进行连接,所以我对这里的错误感到困惑
我打印了PyMongo和MongoEngine返回的MongoClient,它们略有不同:
Pymongo MongoClient:
MongoClient(host=['x.x.x.x:27017'], document_class=dict, tz_aware=False, connect=True)
MongoClient(host=['x.x.x.x:27017'], document_class=dict, tz_aware=False, connect=True, read_preference=Primary())
MongoEngine MongoClient:
MongoClient(host=['x.x.x.x:27017'], document_class=dict, tz_aware=False, connect=True)
MongoClient(host=['x.x.x.x:27017'], document_class=dict, tz_aware=False, connect=True, read_preference=Primary())
阅读偏好是否会影响我的连接能力
下面是进行调用的代码:
user_admin_client = pymongo.MongoClient(
f'mongodb://{usern}:{pswd}@x.x.x.x/my_db'
)
print(user_admin_client)
user_admin_client = mongoengine.connect(db='my_db',
username=usern,
password=pswd,
host='x.x.x.x',
alias='init'
)
print(user_admin_client)
如何让MongoEngine工作?我做错了什么?
----19年9月5日更新:
我尝试了以下代码:
user_admin_client = mongoengine.connect(
f'mongodb://{usern}:{pswd}@x.x.x.x/my_db'
)
print(user_admin_client)
我得到以下信息:
MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True, read_preference=Primary())
...traceback...
pymongo.errors.ServerSelectionTimeoutError: localhost:27017: [WinError 10061] No connection could be made because the target machine actively refused it
我有点困惑,为什么MongoClient现在正试图连接到localhost,因为我的IP地址肯定键入正确。即使使用
x.x.x.x:port
也没有任何作用。我不认为您在这里做错了什么
您可以尝试使用mongouri
本身通过MongoEngine进行连接吗
比如:
user_admin_client = mongoengine.connect('mongodb://{usern}:{pswd}@x.x.x.x/my_db')
print(user_admin_client)
您需要在connect上使用
host
参数
user_admin_client = mongoengine.connect(host='mongodb://{usern}:{pswd}@x.x.x.x/my_db')