はじめに

  • Alembic revision –autogenerate で差分のマイグレーションファイルができない
  • python 3.11, alembic 1.7.7, sqlalchemy 2.0.30, sqlmodel 0.0.18

問題

毎回テーブル作成のマイグレーションファイルが生成されてしまう

解決方法

  • 以下のような include_name を設定することで、デフォルトスキーマに限定する

    • connection は schema 指定でアクセスしている為、type_=schema で name=None で検出される
# exclude system table
def include_name(name, type_, parent_names):
    if type_ == "schema":
        return name in [None]
    else:
        return True

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

Refs