Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t使用MongoEngine进行身份验证。PyMongo工作。如何让MongoEngine进行身份验证?_Python_Mongodb_Pymongo_Mongoengine - Fatal编程技术网

Python Can';t使用MongoEngine进行身份验证。PyMongo工作。如何让MongoEngine进行身份验证?

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

我正在尝试使用mongoengine.connect()对MongoDB数据库进行身份验证。当我使用pymongo.MongoClient()时,代码工作得非常好,但是mongoenine.connect()抛出了以下错误:

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')