使用mongoengine连接MongoDB Atlas集群

5

我有一个Flask应用程序,使用Mongoengine创建数据库。但现在,我需要连接到MongoDB Atlas集群,但只能找到如何使用Pymongo执行此操作:

client = pymongo.MongoClient("mongodb+srv://<username>:<password>@<database-name>.mongodb.net/test?retryWrites=true&w=majority")
db = client.test

我只是想请教如何连接这个新数据库。

3个回答

16
如果您正在使用flask-mongoengine,您可以使用以下模式连接指定的URI:
from flask import Flask
from flask.ext.mongoengine import MongoEngine

app = Flask(__name__)

# This would usually come from your config file
DB_URI = "mongodb+srv://<username>:<password>@<database-name>.mongodb.net/test?retryWrites=true&w=majority"

app.config["MONGODB_HOST"] = DB_URI

db = MongoEngine(app)

if __name__ == '__main__':
    app.run()
如果您正在使用纯mongoengine,则可以通过以下方式简单地建立连接:
from mongoengine import connect

DB_URI = "mongodb+srv://<username>:<password>@<database-name>.mongodb.net/test?retryWrites=true&w=majority"

connect(host=DB_URI)

这实际上是flask-mongoengine幕后调用的内容。


1
谢谢!这对我很有帮助,我想我之前使用 connect 的方法不正确。 - Luccas Paroni
1
谢谢!!!!!@bagerard 我真的想说谢谢。最终,MONGODB_HOST = MONGO_URI 是如此简单。 - robster

2

我认为您在放置URI的方式上存在错误,在<database_name>的位置,您应该放置您的集群名称,如下所示:

app.config['MONG_DBNAME'] = '<DB_name>'
app.config['MONGO_URI'] = 'mongodb+srv://<name>:<password>@<cluster_name>.net/<DB_name>?retryWrites=true'

2

当使用 mongoengine 连接到 MongoDB Atlas 集群时,无论是否使用 flask-mongoengine,您都可以使用以下函数:

# Connect to, return database
def db_connect(database):
    db_uri = "mongodb+srv://<username>:<password>@<cluster>.net/?retryWrites=true&w=majority"
    db = connect(database, host=db_uri)
    return db

数据库变量是一个字符串,用于表示数据库的名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接