モデルやブループリントを分散させて Flask アプリケーションをリファクタリングしていますが、ランタイム エラーが発生しています。
def create_app():
app = flask.Flask("app")
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite://'
app.register_blueprint(api)
db.init_app(app)
db.create_all()
return app
次の問題があります (サンプル プロジェクトはここでホストされています: https://github.com/chfw/sample ):
Traceback (most recent call last):
File "application.py", line 17, in <module>
app = create_app()
File "application.py", line 12, in create_app
db.create_all()
File "\AppData\Roaming\Python\Python27\site-packages\flask_sqlalchemy\__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "\AppData\Roaming\Python\Python27\site-packages\flask_sqlalchemy\__init__.py", line 836, in _execute_for_all_tables
app = self.get_app(app)
File "\AppData\Roaming\Python\Python27\site-packages\flask_sqlalchemy\__init__.py", line 809, in get_app
raise RuntimeError('application not registered on db
'RuntimeError: application not registered on db
instance and no application bound to current context
私はこのトピックについて調査を行いました。リファクタリングはここで提案されています:
Flask-SQLAlchemy のインポート/コンテキストの問題
同じ問題がここで提起されました:
そして、上記のスレッド (2010) は、次のようなハックを提案しました:
app.register_blueprint(api)
db.app=app #<------------<<
db.init_app(app)
誰かがこれを適切に行う方法を知っていましたか? どのように解決しましたか?
ありがとう