如何为 MongoDB Atlas 上的数据库设置 Python EVE REST API 服务设置

How to set Python EVE REST API serving settings for the database on MongoDB Atlas

问题总结

我正在尝试在本地主机 5000 (http://127.0.0.1:5000/) 上使用 mongodb 设置 python eve REST API 服务器。一开始,我的 mongodb 托管在本地主机 27017,并且 API 连接工作正常。但是我想将数据库更改为云服务器,所以我将我的数据库转储到 MongoDB Atlas 并尝试修改 MONGO_HOST 并在 [=56= 中添加用户凭据] 文件。但它没有用。这是我试图修改的代码。

变更前

settings.py

MONGO_HOST = 'localhost'
MONGO_PORT = 27017
MONGO_DBNAME = 'mydb'
...
SERVER_NAME = '127.0.0.1:5000'
URL_PREFIX = 'api'

变更后

settings.py

MONGO_HOST = '<clustername>-mz123.gcp.mongodb.net'
MONGO_USERNAME = 'user'
MONGO_PASSWORD = 'user'
MONGO_DBNAME = 'mydb'
...
SERVER_NAME = '127.0.0.1:5000'
URL_PREFIX = 'api'

我也尝试按照 official 的说明使用 pymongo 访问 mongoDB Atlas,它成功运行如下。所以我认为问题可能恰恰是如何设置 eve settings.py 文件以正确的方式连接到 MongoDB Atlas。

from pymongo import MongoClient
client = MongoClient("mongodb+srv://user:password@<clustername>-mz123.gcp.mongodb.net/test?retryWrites=true&w=majority")
db = client['db']
col = db['collection']

我的问题和想法

  1. 是不是我漏掉了什么设置参数?不知道是不是MONGO_HOST这个名字写错了,我是按照Atlas网站上的说明看的。或者我是否需要将设置更改为 MONGO_URI 之类的形式?但我也尝试过但失败了。哈哈

  2. 在 localhost 5000 服务时,eve REST API 是否仅服务于 localhost DB (27017)?

  3. 有什么建议吗?谢谢!

在您的 settings.py 中,使用您在 MongoClient 示例中使用的参数定义 MONGO_URI。请参阅文档中的 MONGO_URI (https://docs.python-eve.org/en/stable/config.html#global-configuration)