flask-sqlalchemy 修改列属性后执行 migrate 不生效

# 原代码
class
TestModel(BaseModel): __tablename__ = "test" type = db.Column(db.String(255)) point_list = db.Column(db.String(256))

修改列属性后

class TestModel(BaseModel):
    __tablename__ = "test"

    type = db.Column(db.String(255))
    point_list = db.Column(db.String(512))

执行 flask db migrate发现未检测到修改

后 参考 https://blog.csdn.net/zhongqiushen/article/details/79189270

在下面的migrations/env.py的函数中加了 compare_type=True, 再执行就可以检测到列修改了

def run_migrations_online():
    """Run migrations in 'online' mode.

    In this scenario we need to create an Engine
    and associate a connection with the context.

    """

    # this callback is used to prevent an auto-migration from being generated
    # when there are no changes to the schema
    # reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html
    def process_revision_directives(context, revision, directives):
        if getattr(config.cmd_opts, 'autogenerate', False):
            script = directives[0]
            if script.upgrade_ops.is_empty():
                directives[:] = []
                logger.info('No changes in schema detected.')

    connectable = engine_from_config(
        config.get_section(config.config_ini_section),
        prefix='sqlalchemy.',
        poolclass=pool.NullPool,
    )

    with connectable.connect() as connection:
        context.configure(
            connection=connection,
            target_metadata=target_metadata,
            process_revision_directives=process_revision_directives,
            compare_type=True,  # 加了此行代码
            **current_app.extensions['migrate'].configure_args
        )

        with context.begin_transaction():
            context.run_migrations()

 

posted @ 2021-07-16 17:04  WenderWang  阅读(431)  评论(0)    收藏  举报