首页 > 解决方案 > flask db migrate 未从模型文件夹中检测到架构

问题描述

大家好,我正在尝试在我的烧瓶休息 API 应用程序中实现 MVC 模式,但我面临一些问题,例如烧瓶迁移和编写可扩展代码。

对于烧瓶迁移,我在迁移到 mysql 时无法检测模型。

以下是我的示例应用程序架构

在此处输入图像描述

这是模型/ ini .py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

这是我的模型/user_master.py

import dataclasses

import flask_bcrypt
from . import db


# from sqlalchemy_utils import PhoneNumber
@dataclasses
class UserTypeMaster(db.Model):
    __tablename__ = 'UserTypeMaster'

    def __init__(self, _id, _type):
        self.id = _id
        self.type = _type

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    type = db.Column(db.String(20), unique=True, nullable=False)

这是我的 CenturyApi.py 文件

from flask import Flask
from flask_migrate import Migrate

from config import config_names
from models import db
from flask_sqlalchemy import SQLAlchemy
from routes.user_route import user_bp

app = Flask(__name__)
app.config.from_object(config_names['default'])
app.config.from_pyfile('config.py')

db.init_app(app)

migrate = Migrate()
migrate.init_app(app, db)
from models.user_master import UserMaster
from models.address_master import CityMaster, StateMaster, CountryMaster

app.register_blueprint(user_bp, url_prefix='/users')


@app.route('/')
def index():
    return "Hello"


if __name__ == '__main__':
    app.run()

如果我在初始化 migrate 对象并运行 flask db migrate 后不包含模型,我会得到以下信息:

信息 [alembic.runtime.migration] 上下文 impl MySQLImpl。INFO [alembic.runtime.migration] 将假定非事务性 DDL。INFO [alembic.env] 未检测到架构更改。

当包括模型时,我得到以下错误:

文件“/home/abhishek/FreeLance/Century/centuryApi/centuryApi.py”,第 17 行,从 models.user_master 导入 UserMaster 文件“/home/abhishek/FreeLance/Century/centuryApi/models/user_master.py”,第 9 行, 在类 UserTypeMaster(db.Model): TypeError: 'module' object is not callable

我没有得到在 user_master.py 的第 9 行错误分配我的参考的位置

我还需要有关此架构的建议以及如何即兴发挥更多以使其更具可扩展性。

任何帮助将不胜感激。谢谢

标签: pythonflaskdatabase-designsqlalchemyarchitecture

解决方案


推荐阅读