6

我正在尝试使用 django 将我的 django 实例连接到 mongo db 集群。我已经从各种来源进行了检查,它越来越接近工作的方式是:

  • 安装 dnspython
  • 有以下DATABASES字典settings.py
DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': 'test',
        'HOST': 'mongodb+srv://mongo_usr:' + urllib.parse.quote('mypassword') + '@domain_assigned.mongodb.net/test?ssl=true&ssl_cert_reqs=CERT_NONE&retryWrites=true',
        'ENFORCE_SCHEMA': False
    }
}

它确实找到了端点,但我收到了一个奇怪的错误:

pymongo.errors.ServerSelectionTimeoutError: connection closed,connection closed,connection closed

以前有人修过这个吗?

4

6 回答 6

7

我刚刚设置了 Djongo 和 MongoDB Atlas,如下所示:

DATABASES = {
        'default': {
        'ENGINE': 'djongo',
        'NAME': '<db name>',
        'HOST': 'mongodb+srv://<db username>:<db password>@....mongodb.net/test?retryWrites=true',
        'USER': '<db username>',
        'PASSWORD': '<db password>',
    }
}

希望有帮助!

于 2019-04-07T15:06:01.080 回答
5

使用 pip install djongo.

确保导入以下模块:

import urllib

设置数据库设置。

DATABASES = {
    'default': {
        'ENGINE': 'djongo',
        'NAME': '<db_name>',
        'HOST': "mongodb+srv://<db_username>:" +
                urllib.parse.quote_plus("<db_password>") +
                "@........mongodb.net/test?retryWrites=true&ssl=true&ssl_cert_reqs=CERT_NONE&w=majority",
    }
}

用您的凭据替换 db_username、db_name 和 db_password。

还要编辑 Mongo Atlas 给出的主机名。

于 2019-11-01T14:25:34.637 回答
5

得到这个工作没有任何黑客如下:

  1. 安装pip install dnspython.
  2. 使用以下内容更新 settings.py,
'default': {
        'ENGINE': 'djongo',
        'NAME': '<dbname>',
        'CLIENT': {
            'host': "mongodb+srv://<username>:" + quote_plus('<password>') + "@<cluster-name>.mongodb.net/test?retryWrites=true&w=majority"
        },   
    }
  1. python manage.py makemigrations
  2. python manage.py migrate
于 2020-05-10T18:39:29.237 回答
1

最简单和正确的解决方案:

第 1 步:安装 djongo 和 dnspython

点安装 djongo

点安装 dnspython

步骤 2:settings.py 中的更改:

DATABASES = {
"default": {
    "ENGINE": "djongo",
    "CLIENT": {
        "host": "mongodb+srv://<username>:<password>@<cluster_name>.mongodb.net/?retryWrites=true&w=majority",
        "username": "<username>",
        "password": "<password>",
        "name": "<database_name>",
        "authMechanism": "SCRAM-SHA-1",
    },
}}
于 2020-06-01T07:13:44.207 回答
0

我已经使用 djongo 连接到 mongo atlas,方法是在这里使用 @Market Ahead 的片段

看起来他们不希望密码里面有奇怪的字符。在这种情况下,即使转义也无法以最佳方式工作。

于 2019-04-14T13:33:49.373 回答
0

编辑数据库的 settings.py 后,转到您的 env lib 并在 pymongo/mongo_client.py 中进行这些更改

HOST = "mongodb+srv://<Username>:<password>@cluster0-gbdot.mongodb.net/<databaseName>?retryWrites=true&w=majority"

于 2021-02-04T12:40:49.827 回答