Alembic 中的不可逆迁移

Irreversible migrations in Alembic

并非所有数据库迁移都是可逆的。使用 Alembic+SQLAlchemy 时,是否有一种(规范的)方法来 "mark" 我的 downgrade function/migration 以便它不能被逆转?

与您的 down 方法比较 ActiveRecord migrations where you can raise ActiveRecord::IrreversibleMigration 以表明这一点。

donwgrade 中引发异常(任何异常)会导致降级失败 "cleanly" 吗?

一个例外就够了。它将导致迁移失败,您将永远无法返回。

def downgrade():
    raise Exception("Irreversible migration")