はじめに

  • Alembic revision –autogenerate で変更がなくても空のrevisionファイルができるのを避ける
  • python 3.11, alembic 1.7.7, sqlalchemy 2.0.30, sqlmodel 0.0.18

問題 疑問

変更がなくても空のrevisionファイルが生成されてしまう

まとめ 結果 解決方法

  • 以下のような process_revision_directives を設定することで、差分がない場合は空のrevisionファイルを生成しない
def run_migrations_online():
    :

    def process_revision_directives(context, revision, directives):
        if config.cmd_opts.autogenerate:
            script = directives[0]
            if script.upgrade_ops.is_empty():
                directives[:] = []
                print('No changes in schema detected.')
    :

    with connectable.connect() as connection:
        context.configure(
            connection=connection,
            target_metadata=target_metadata,
            include_schemas=True,
            dialect_opts={"paramstyle": "named"},
            include_name=include_name,
            process_revision_directives=process_revision_directives,
        )

Refs