在烧瓶蓝图中击败循环引用

时间:2015-10-28 18:19:20

标签: python mongodb flask

这里的问题是我试图在我的蓝图中使用我的数据库连接,但是尽管我努力导入,但我似乎无法避免输入错误。这是我原来的问题:

Blueprints, PyMongo in Flask

原始海报提出了一个建议:Circular import of db reference using Flask-SQLAlchemy and Blueprints,但必须有一种更简单的做事方式。

我在原始问题中尝试了这个建议,当我试图在我的蓝图中拉入mongo连接时导致导入错误。错误是:

ImportError: cannot import name 'mongo'

我还尝试移动导入位置,以便在我的login.py中进行数据库连接之后,但是这一切似乎都不起作用。我在哪里可以找到一个简单的工作示例,我可以使用它似乎是防弹的。

1 个答案:

答案 0 :(得分:1)

通过移除依赖关系可以避免循环引用。

通用循环参考情景:

A.py:

import B
def dependency():
    pass

B.py:

from A import dependency

可以通过重构来避免:

A.py:

import B
from C import dependency

B.py:

from C import dependency

C.py:

def dependency():
    pass

错误:ImportError: cannot import name 'mongo'
建议你提交的文件不能找到模块mongo

要解决此问题,请确保模块路径正确,并且任何文件夹中都包含__init__.py文件。

同样来自您之前的问题,请注意您可以将您的instancied mongo变量附加到您的烧瓶应用程序,然后当使用current_app时,您将获得数据库连接。

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