【问题标题】:How to set Python EVE REST API serving settings for the database on MongoDB Atlas如何为 MongoDB Atlas 上的数据库设置 Python EVE REST API 服务设置
【发布时间】:2026-01-04 21:25:03
【问题描述】:

问题总结

我正在尝试在 localhost 5000 (http://127.0.0.1:5000/) 上使用 mongodb 设置一个 python eve REST API 服务器。一开始,我的 mongodb 托管在 localhost 27017,API 连接运行良好。但我想将数据库更改为云服务器,所以我将我的数据库转储到 MongoDB Atlas 并尝试修改 MONGO_HOST 并在 settings.py 文件中添加用户凭据。但它没有用。这是我尝试修改的代码。

更改前

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. 有什么建议吗?谢谢!

【问题讨论】:

    标签: mongodb python-3.6 flask-restful eve mongodb-atlas


    【解决方案1】:

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

    【讨论】:

    • @victor-chen 如果这对您来说是正确的答案,请标记为正确以帮助他人。
    • 感谢您的提示!我已经尝试过了,它成功了。顺便说一句,我删除了原来的设置,只设置了 MONGO_URI 和 MONGO_DBNAME。