【问题标题】:Connect to MongoDB atlas cluster with mongoengine使用 mongoengine 连接到 MongoDB atlas 集群
【发布时间】:2020-01-15 18:49:41
【问题描述】:

我有一个烧瓶应用程序,我使用 mongoengine 创建数据库。但是现在,我需要连接 MongoDB Atlas 的集群,但我只能找到使用 Pymongo 的方法:

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

我只是想要一些帮助来连接这个新数据库。

【问题讨论】:

    标签: mongodb flask pymongo mongoengine mongodb-atlas


    【解决方案1】:

    如果您使用的是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 在幕后所说的

    【讨论】:

    • 谢谢!这对我有帮助,我认为我使用连接错误
    • 谢谢!!!! @bagerard 我真的想说声谢谢。 MONGODB_HOST = MONGO_URI 最终如此简单。
    【解决方案2】:

    我认为您在 &lt;database_name&gt; 的位置放置 URI 的方式是错误的,您应该将集群名称改为:

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

    【讨论】:

      【解决方案3】:

      当使用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
      

      其中数据库变量是一个带有数据库名称的字符串。

      【讨论】:

        猜你喜欢
        • 2021-04-29
        • 2018-03-05
        • 1970-01-01
        • 2019-06-10
        • 2017-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多