在Flask中按文件分隔SQLAlchemy模型

ele*_*119 34 python sqlalchemy flask flask-sqlalchemy

对,我已经看到了直接存储在主应用程序文件(机型瓶应用的许多例子http://pythonhosted.org/Flask-SQLAlchemy/quickstart.html,http://maximebf.com/blog/2012/10/建设网站-in-python-with-flask /).其他的(http://flask.pocoo.org/docs/patterns/sqlalchemy/)有一个"models.py"文件,其中放置了模型.

如何从单独的文件中取出我的Flask app导入模型,例如"User.py"?当我尝试使用这些内容创建User.py文件时:

from app import db

class User(db.Model):
    [...]
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

File "/Users/stackoverflow/myapp/models/User.py", line 1, in <module>
from app import db
ImportError: No module named app
Run Code Online (Sandbox Code Playgroud)

当我插入from models import User我的模块文件.

ele*_*119 24

这个答案非常有用:https://stackoverflow.com/a/9695045/353878.

我不需要立即初始化数据库.

  • @johnny这意味着“SQLAlchemy()”不必在其使用的模块中将“app”作为参数。在大多数示例中,您可以看到“SQLAlchemy(app)”,但在本例中它需要来自其他范围的“app”。相反,您可以使用未初始化的“SQLAlchemy()”并稍后使用“init_app(app)”方法,如[http://stackoverflow.com/a/9695045/2040487](http://stackoverflow.com/a/9695045中所述/2040487)。 (5认同)
  • 这是什么意思,“不立即初始化数据库”? (2认同)