Bez migrations měníte schéma ručně na produkci. S migrations máte verzovanou, opakovatelnou, reversibilní historii změn.
Alembic (Python/SQLAlchemy)¶
Inicializace¶
alembic init migrations
Generování migrace¶
alembic revision –autogenerate -m “add users table”
Aplikace¶
alembic upgrade head alembic downgrade -1 # Rollback
Příklad migrace¶
def upgrade(): op.create_table(‘users’, sa.Column(‘id’, sa.Integer, primary_key=True), sa.Column(‘email’, sa.String(255), unique=True, nullable=False), sa.Column(‘name’, sa.String(100)), sa.Column(‘created_at’, sa.DateTime, server_default=sa.func.now()), ) op.create_index(‘idx_users_email’, ‘users’, [‘email’]) def downgrade(): op.drop_table(‘users’)
Best practices¶
- Migrace v source control
- Idempotentní (bezpečné spustit vícekrát)
- Backward compatible (deploy před migration)
- Test na kopii produkčních dat
- Nikdy nemažte sloupec přímo — deprecated → remove
Klíčový takeaway¶
Migrace = verzované schéma. Alembic pro Python, Flyway pro Java, Prisma migrate pro TypeScript.