我正在尝试拼凑一个小Flask应用程序。这是我的结构。Flask和SQLAlchemy,应用程序未在实例上注册
run.py
application
__init__.py
database.py
models.py
views.py
database.py
只包含SQLAlchemy的对象:
db = SQLAlchemy()
我然后导入到我的models.py
它来创建我的模型。最后,内部__init__.py
我导入db
从database.py
做:
from .database import db
from flask import Flask
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///application.db'
db.init_app(app)
db.create_all()
但是,我不能创建从它出现在模型中的表。如果我删除db.create_all()
。该应用程序将运行没有问题,但显然不创建数据库。当出现db.create_all()
时,我给出'RuntimeError:应用程序未在数据库实例中注册,并且没有绑定到当前上下文的应用程序'。
老实说,我很困惑,因为之前我在刚创建应用程序时没有创建数据库的问题,但将db
移动到它自己的文件似乎已经纠正了这个问题。现在,唯一的问题仍然是创建数据库。
谁能告诉我可能是什么问题?我真的很难过。
啊,我明白了。不过,我最终做的是将'app'导入我的模型并在那里创建'db'对象。这似乎缓解了我所有的问题。 – Battleroid 2014-10-23 02:24:06
很酷,也适用。很高兴你能解决它! – 2014-10-23 02:35:07
你也可以这样做'db.create_all(app = app)'并将'app'参数设置为你当前的应用程序 – danidee 2016-07-20 15:28:16