Вы неправильно прочитали ссылочный текст. Это говорит о чем-то совершенно ином. Это говорит о том, что ваш db
объект должен быть отделен от app
объекта (и связать два вместе в фабричной функции create_app
). Создание нескольких db
объектов только усложняет вам задачу.
Все, что нужно, это один db = SQLAlchemy()
объект, и все файлы, которые определяют модели, должны быть импортированы. Обычно это делается прямо или косвенно с помощью заводской функции create_app
. В любом случае вам необходимо вызвать функцию create_app()
, чтобы иметь возможность запустить инструмент командной строки flask db
в любом случае .
Далее вам не необходимо создать менеджера либо . Объект Managar
является отложенным с того момента, когда проект Flask добавил поддержку самих сценариев. Если вы используете Flask 0.12 или новее, вы не хотите использовать Flask-Script и его менеджер.
Итак, все, что вам нужно, в вашем __init_.py
, это:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
db = SQLAlchemy()
def create_app(test_config=None):
app = Flask(__name__)
app.config.from_object(f"{__name__}.config")
app.config.from_envvar("PROJECTNAME_SETTINGS", silent=True)
if test_config:
app.config.from_mapping(test_config)
db.init_app(app)
Migrate(app, db)
# importing the models to make sure they are known to Flask-Migrate
from models import models1, models2
# any other registrations; blueprints, template utilities, commands
return app