【发布时间】:2016-02-29 20:48:40
【问题描述】:
我正在重构一个 Flask 应用程序以使用蓝图和应用程序工厂。我已经阅读了使用应用程序工厂的文档:Application Factories。但是,文档似乎是手动创建模型。我想反映现有数据库中的表。反映引擎时出现以下错误:
RuntimeError: application not registered on db instance and no application bound to current context
我正在调用db.init_app(app),然后使用应用程序上下文,调用create_all 来创建我的模型。到这里,应用现在不是有db引擎了吗,不是绑定到flask app对象了吗?
__init__.py:
from database import db
from flask import Flask
def create_app(config_file):
app = Flask(__name__)
app.config.from_pyfile(config_file)
db.init_app(app)
with app.app_context():
db.create_all()
return app
database.py:
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
models.py:
from database import db
class Trailer(db.Model):
__table__ = db.Model.metadata.tables['tr_trailer']
*****更新*****
我已更新应用程序以在应用程序上下文中反映引擎。
with app.app_context():
db.Model.metadata.reflect(db.engine)
db.create_all()
但是,现在我的桌子上出现了关键错误:
__table__ = db.Model.metadata.tables['tr_trailer']
KeyError: 'tr_trailer'
【问题讨论】:
标签: python flask sqlalchemy flask-sqlalchemy