Python djongo,无法连接到cloud.mongodb.com上的远程数据库
我认为下面的设置可以让djongo连接到mongodb.com上的远程mongodb,但错误消息显示它仍在尝试连接本地主机Python djongo,无法连接到cloud.mongodb.com上的远程数据库,python,django,python-3.x,mongodb,djongo,Python,Django,Python 3.x,Mongodb,Djongo,我认为下面的设置可以让djongo连接到mongodb.com上的远程mongodb,但错误消息显示它仍在尝试连接本地主机 DATABASES = { 'default': { 'ENGINE': 'djongo', 'HOST': 'mongodb+srv://<username>:<password>@cluster-name/<dbname>?retryWrites=true&w=majority', }
DATABASES = {
'default': {
'ENGINE': 'djongo',
'HOST': 'mongodb+srv://<username>:<password>@cluster-name/<dbname>?retryWrites=true&w=majority',
}
转到settings.py文件并使用下面的数据库settngs
DATABASES = {
'default': {
'ENGINE': 'djongo',
'ENFORCE_SCHEMA': True
'NAME': 'your-db-name',
'HOST': 'host-name or ip address',
'PORT': port_number,
'USER': 'db-username',
'PASSWORD': 'password',
'AUTH_SOURCE': 'db-name',
'AUTH_MECHANISM': 'SCRAM-SHA-1',
}
还请查看本文,了解django和MongoDB之间的连接
我个人建议你使用pycharm。在Pycharm中,您可以测试您的连接。这样你就可以更清楚地了解整个场景
我在django中使用远程数据库。你可以在下图中看到
转到settings.py文件并使用以下数据库设置
DATABASES = {
'default': {
'ENGINE': 'djongo',
'ENFORCE_SCHEMA': True
'NAME': 'your-db-name',
'HOST': 'host-name or ip address',
'PORT': port_number,
'USER': 'db-username',
'PASSWORD': 'password',
'AUTH_SOURCE': 'db-name',
'AUTH_MECHANISM': 'SCRAM-SHA-1',
}
还请查看本文,了解django和MongoDB之间的连接
我个人建议你使用pycharm。在Pycharm中,您可以测试您的连接。这样你就可以更清楚地了解整个场景
我在django中使用远程数据库。你可以在下图中看到
我找到了解决办法
我采用了以下方法>
因此,在幕后,djongo使用->pymongo
pymongo的默认配置是
类MongoClientcommon.BaseObject:
HOST=localhost此处HOST具有硬编码值
端口=27017
哪个在下面的文件中
venv/lib/python3.6/site-packages/pymongo/mongo_client.py
将主机的harcoded值替换为
主机='mongodb+srv://:@cluster name/?retryWrites=true&w=mailty'
另外
如果需要,我们可以设置环境变量
HOST=os.getenv'MONGO\u DB\u URL'
我找到了解决办法
我采用了以下方法>
因此,在幕后,djongo使用->pymongo
pymongo的默认配置是
类MongoClientcommon.BaseObject:
HOST=localhost此处HOST具有硬编码值
端口=27017
哪个在下面的文件中
venv/lib/python3.6/site-packages/pymongo/mongo_client.py
将主机的harcoded值替换为
主机='mongodb+srv://:@cluster name/?retryWrites=true&w=mailty'
另外
如果需要,我们可以设置环境变量
HOST=os.getenv'MONGO\u DB\u URL'
我以前遇到过你的问题。在我的例子中,我在容器中运行django和mongodb。我发现无论我在setting.py中设置了什么设置,djongothey在后面使用Pymango的人都忽略了我的设置 对于寻求解决方案的其他人,您可能需要检查setting.py中的语法,该语法应如下所示:
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': 'your-db-name',
'ENFORCE_SCHEMA': False,
'CLIENT': {
'host': 'host-name or ip address',
'port': port_number,
'username': 'db-username',
'password': 'password',
'authSource': 'db-name',
'authMechanism': 'SCRAM-SHA-1'
},
.......
}
您可以看到主机、用户和密码字段都位于“CLIENT”下,这与Django描述的默认语法不同。所以,也许大多数人在这里会感到困惑,并被困在这个问题上。我以前遇到过你的问题。在我的例子中,我在容器中运行django和mongodb。我发现无论我在setting.py中设置了什么设置,djongothey在后面使用Pymango的人都忽略了我的设置 对于寻求解决方案的其他人,您可能需要检查setting.py中的语法,该语法应如下所示:
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': 'your-db-name',
'ENFORCE_SCHEMA': False,
'CLIENT': {
'host': 'host-name or ip address',
'port': port_number,
'username': 'db-username',
'password': 'password',
'authSource': 'db-name',
'authMechanism': 'SCRAM-SHA-1'
},
.......
}
您可以看到主机、用户和密码字段都位于“CLIENT”下,这与Django描述的默认语法不同。因此,也许大多数人在这里会感到困惑,并被困在这个问题上。谢谢,我应该为数据库object中的“AUTH_SOURCE”键添加什么呢?不客气!听起来不错,你的问题已经解决了。谢谢,我应该为数据库对象中的“AUTH_SOURCE”键添加什么呢?不客气!听起来不错,你的问题已经解决了。