Как получить экземпляр базы данных приложения при использовании подхода фабричной функции? - PullRequest
0 голосов
/ 07 сентября 2018

Я использую фабричный функциональный подход для создания экземпляра приложения. Вот код:

#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. Что я делаю не так?

...