首页 > 解决方案 > 如何为 MongoDB Atlas 上的数据库设置 Python EVE REST API 服务设置

问题描述

问题总结

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

变更前

设置.py

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

改变后

设置.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'

我也尝试按照官方的指示使用 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. 有什么建议么?谢谢!

标签: mongodbpython-3.6flask-restfulevemongodb-atlas

解决方案


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


推荐阅读