跨多个模块使用 Flask-pymongo

Posted

技术标签:

【中文标题】跨多个模块使用 Flask-pymongo【英文标题】:Using Flask-pymongo across multiple modules 【发布时间】:2015-04-01 16:11:54 【问题描述】:

我在理解如何合并 Flask-Pymongo 时遇到了一些麻烦。我的应用程序是从我的rrapp.py 启动的,在这个文件里面,我有

rrapp.py

#
# Imports up here
#

app = Flask(__name__)
mongo = PyMongo(app)

# Code down here

现在,要使用它,我只需执行mongo.db.users.find()。这很好用。

现在,假设我有另一个名为 userservice.py 的文件,我从 rrapp.py 中的一个端点调用方法。如果我无权访问app 对象,如何将PyMongo(app) 合并到我的userservice.py 文件中?还是我在这里遗漏了一些明显的东西?

【问题讨论】:

我在 config 文件夹中有一个 config.py 和一个 def connect() 函数。我只关注from config import config 并做config.connect()。然后我可以设置db = config.connect() 并转到results = db.doc.find() 【参考方案1】: 您应该首先定义 mongo oustside create_app 以从其他文件中访问它。 然后使用如下所示的 init_app:

从烧瓶导入烧瓶,current_app

from flask_pymongo import PyMongo

mongo = PyMongo()

def create_app(config_name):
    app = Flask(__name__, instance_relative_config=False)

    app.config.from_object(app_config[config_name])

    # INIT EXTENSIONS ----------------------

    mongo.init_app(app)

    return app

然后在任何文件中,您都可以从上述文件中导入 mongo。例如:

from ../factory import mongo

【讨论】:

以上是关于跨多个模块使用 Flask-pymongo的主要内容,如果未能解决你的问题,请参考以下文章

跨多个文件拆分模块

跨多个模块访问单例[重复]

包及跨模块导入

跨多个文件破坏 ruby​​ 模块

设计模式:跨多个模块评估安全性

如何在 NestJS 中跨模块全局注入价值?