Я использую фабричный функциональный подход для создания экземпляра приложения. Вот код:
#factory.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app(config_class=Config):
app = Flask(__name__)
app.config.from_object(Config)
db.init_app(app)
return app
Когда я использую этот подход, база данных еще не существует для приложения. Как я могу заставить экземпляр приложения db
использовать функцию db.create_all()
для создания схемы базы данных?
Мне известно о расширении flask-migrate, которое может настроить его, если оно не существует, но хотелось бы знать, как это можно сделать при использовании этого подхода.
Когда я импортирую экземпляр БД и использую db.create_all()
, выдается следующая ошибка:
'No application found. Either work inside a view function or push'
RuntimeError: No application found. Either work inside a view function or push an application context.
Даже этот подход не работает:
from factory import create_app, db
app = create_app()
with app.app_context():
db.create_all()
Я не смог найти никакого решения для этого даже после большого количества поиска в Google. Что я делаю не так?