我有一个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
的数据库对象?感谢。
答案 0 :(得分:2)
将名为__init__.py
的空文件添加到views
文件夹中。
另外,我认为你的点数太多了,即它应该是from .. import db
。第一个.
引用views
和第二个.
将引用您的__init__.py
。
修改强>:
我看了一下我自己做的烧瓶(freevle),看起来我从来没有使用相对导入来获取数据库。相反,我使用了应用名称,即您的顶级__init__.py
所在的文件夹的名称。使用免费版,我使用了from freevle import db
。这对你有用吗?