我正在尝试使用django将django实例连接到mongo数据库集群。我从各种来源检查过,它越来越接近工作的方式是:
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
有人以前解决过这个问题吗?
答案 0 :(得分:2)
按照以下步骤进行工作:
pip install dnspython
。'default': {
'ENGINE': 'djongo',
'NAME': '<dbname>',
'CLIENT': {
'host': "mongodb+srv://<username>:" + quote_plus('<password>') + "@<cluster-name>.mongodb.net/test?retryWrites=true&w=majority"
},
}
python manage.py makemigrations
python manage.py migrate
答案 1 :(得分:1)
我只需使用以下命令设置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>',
}
}
希望有帮助!
答案 2 :(得分:1)
通过使用@Market Ahead here
中的代码段,我设法通过djongo连接到了mongo地图集似乎他们不希望密码中包含奇怪的字符。在这种情况下,即使转义也无法达到最佳效果。
答案 3 :(得分:1)
使用以下命令安装djongo软件包
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提供的主机名。
答案 4 :(得分:1)
最简单正确的解决方案:
步骤1:安装djongo和dnspython
pip install djongo
pip安装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",
},
}}
答案 5 :(得分:0)
编辑数据库的 settings.py 后,转到 env lib 并在 pymongo/mongo_client.py 中进行这些更改
HOST = "mongodb+srv://<Username>:<password>@cluster0-gbdot.mongodb.net/<databaseName>?retryWrites=true&w=majority"