烧瓶数据库迁移错误:无法导入“应用程序”

时间:2021-05-28 14:47:02

标签: python flask flask-sqlalchemy flask-migrate

我有一个运行良好的 flask 应用程序,我之前也运行过迁移,因为我有一个 migrations 文件夹。但是,运行命令 flask db initflask db migrateflask db upgrade 都会给我同样的错误 Error: Could not import "app".

我的项目中没有任何包含 from app import app 的行。

我还在我的环境中设置了 FLASK_APP=app.py

app.py

from datetime import timedelta
from typing import Any

from config import config
from extensions import db
from flask import Flask, session
from flask_admin import Admin  # type: ignore
from flask_migrate import Migrate  # type: ignore


def create_app() -> Flask:
    class ReverseProxied(object):
        def __init__(self, app: Flask) -> None:
            self.app = app

        def __call__(self, environ: Any, start_response: Any) -> Any:
            scheme = environ.get('HTTP_X_FORWARDED_PROTO')
            if scheme:
                environ['wsgi.url_scheme'] = scheme
            return self.app(environ, start_response)

    app = Flask(__name__)
    app.wsgi_app = ReverseProxied(app.wsgi_app)  # type: ignore

    config_name = app.config['ENV'] if app.config['ENV'] else 'config.DevelopmentConfig'
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)

    app.config['FLASK_ADMIN_SWATCH'] = 'cerulean'

    @app.before_request
    def before_request() -> None:
        session.permanent = True
        app.permanent_session_lifetime = timedelta(minutes=60)

    register_extensions(app)
    register_blueprints(app)
    add_model_views(app)
    add_error_handlers(app)

    return app


def register_extensions(app: Flask) -> None:
    db.init_app(app)
    Migrate(app, db)

def register_blueprints(app: Flask) -> None:
    from bp1.views import bp1
    from bp2.views import bp2

    app.register_blueprint(bp1)
    app.register_blueprint(bp2)


def add_model_views(app: Flask) -> None:
    import model_views
    import models

    admin.add_view(model_views.BP1View(models.BP1, db.session))

    admin.add_view(model_views.BP2View(models.BP2, db.session))


if __name__ == '__main__':
    app = create_app()
    app.run(host='0.0.0.0')

extensions.py

from flask_sqlalchemy import SQLAlchemy  # type: ignore

db = SQLAlchemy()

0 个答案:

没有答案
相关问题