【发布时间】:2013-01-25 05:28:35
【问题描述】:
我见过的许多 Flask 应用示例都将模型直接存储在主应用文件中(http://pythonhosted.org/Flask-SQLAlchemy/quickstart.html、http://maximebf.com/blog/2012/10/building-websites-in-python-with-flask/)。其他的 (http://flask.pocoo.org/docs/patterns/sqlalchemy/) 有一个“models.py”文件,其中放置了模型。
如何让我的 Flask 应用程序从单独的文件导入模型,例如“用户.py”?当我尝试使用以下内容创建 User.py 文件时:
from app import db
class User(db.Model):
[...]
我收到以下错误:
File "/Users/stackoverflow/myapp/models/User.py", line 1, in <module>
from app import db
ImportError: No module named app
当我在我的模块文件中插入from models import User。
【问题讨论】:
-
但是
db是在哪里定义的?如果您在database.py中创建db,那么您需要from .database import db,而不是来自app。 -
db在我的主要app.py文件中定义:db = SQLAlchemy(app)。 -
我不知道在哪里定义它,因为“app”变量不会在任何其他文件的范围内。
-
但是如果
app是从User导入的,那么你现在有一个循环导入,这是行不通的。将db移出到单独的模块;您链接到的 Flask 模式文档有一个单独的database.py模块。 -
你确实不需要需要导入
app;只需创建一个具有相同名称的Flask()的新实例。在任何地方使用Flask('yourapplication'),请参阅flask.pocoo.org/docs/api/#application-object。这是一个循环导入损坏。
标签: python sqlalchemy flask flask-sqlalchemy