如何使用Flask从__init__.py导入

时间:2015-08-02 17:00:03

标签: python flask sqlalchemy

我有一个Flask应用程序的以下文件结构:

myapplication/
  run.py
  myapplication/
    __init__.py
    views/
      __init__.py
      models.py
      ...
    templates/
    static/

我使用SQLAlchemy在myapplication/__init__.py初始化了数据库。我想导入models.py中的数据库对象,虽然我不确定如何做到这一点。

我读了this answer并尝试使用这样的相对导入从myapplication/__init__.py导入数据库对象:

from ... import db

但我收到此错误:ValueError: Attempted relative import in non-package

那么如何在myapplication/__init__.py中找到models.py的数据库对象?感谢。

1 个答案:

答案 0 :(得分:2)

将名为__init__.py的空文件添加到views文件夹中。 另外,我认为你的点数太多了,即它应该是from .. import db。第一个.引用views和第二个.将引用您的__init__.py

修改: 我看了一下我自己做的烧瓶(freevle),看起来我从来没有使用相对导入来获取数据库。相反,我使用了应用名称,即您的顶级__init__.py所在的文件夹的名称。使用免费版,我使用了from freevle import db。这对你有用吗?