# sqlalchemy/alembic

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/sqlalchemy-alembic).**

4,215 stars · 341 forks · Python · MIT

## Links

- GitHub: https://github.com/sqlalchemy/alembic
- awesome-repositories: https://awesome-repositories.com/repository/sqlalchemy-alembic.md

## Topics

`python` `sql` `sqlalchemy`

## Description

Alembic is a database schema versioning system and migration tool for SQLAlchemy. It manages incremental updates to database structures using versioned scripts that support both upgrading and downgrading to keep the database and code in sync.

The system utilizes a directed acyclic graph for migration management, which allows for non-linear versioning, including branching and merging across multiple root versions. It includes an automated schema diffing tool that compares live database schemas against metadata objects to programmatically generate migration instructions.

The tool provides capabilities for transactional schema evolution to ensure atomic updates and prevent partial database corruption. Additional functionality includes translating migration directives into raw SQL strings for auditing and maintaining script-based version tracking via a dedicated database table.

## Tags

### Software Engineering & Architecture

- [Database Schema Migrations](https://awesome-repositories.com/f/software-engineering-architecture/data-migrators/database-schema-migrations.md) — Provides a comprehensive system for the automated versioning and updating of database structures to maintain consistency across environments. ([source](https://cdn.jsdelivr.net/gh/sqlalchemy/alembic@main/README.md))
- [Database Schema Version Control](https://awesome-repositories.com/f/software-engineering-architecture/database-schema-version-control.md) — Provides a complete system for tracking and managing incremental updates to database schemas.
- [Migration State Tracking](https://awesome-repositories.com/f/software-engineering-architecture/contract-upgradeability/version-tracking/migration-state-tracking.md) — Uses a dedicated database table to track which schema versions have been applied.
- [Non-Linear Migration Versioning](https://awesome-repositories.com/f/software-engineering-architecture/non-linear-migration-versioning.md) — Implements a graph-based version tracking system that supports branching and merging of database schema updates. ([source](https://cdn.jsdelivr.net/gh/sqlalchemy/alembic@main/README.md))
- [Transactional Migration Managers](https://awesome-repositories.com/f/software-engineering-architecture/transactional-migration-managers.md) — Executes schema migrations within atomic transactions to maintain data integrity during updates.
- [Directed Acyclic Graph Models](https://awesome-repositories.com/f/software-engineering-architecture/causal-relationship-modeling/directed-acyclic-graph-models.md) — Implements migration tracking as a graph to support complex branching and merging of schema versions.

### Data & Databases

- [Transactional DDL Execution](https://awesome-repositories.com/f/data-databases/database-transactions/nested-transactions/nested-transaction-prevention/transactional-ddl-execution.md) — Wraps schema changes in database transactions to ensure atomic updates and prevent partial corruption.
- [Schema State Diffing](https://awesome-repositories.com/f/data-databases/schema-state-diffing.md) — Provides algorithmic calculation of changes needed to transform a live database schema to match a model definition.
- [Schema Version Tracking](https://awesome-repositories.com/f/data-databases/schema-version-tracking.md) — Maintains a dedicated database table to record the current version ID and track applied migrations.
- [Migration Script Generators](https://awesome-repositories.com/f/data-databases/sql-migration-frameworks/migration-script-generators.md) — Automatically produces candidate migration directives by comparing data models to live database states.
- [SQLAlchemy Schema Migrations](https://awesome-repositories.com/f/data-databases/sqlalchemy-schema-migrations.md) — Specifically designed to handle schema migrations for databases defined by SQLAlchemy ORM models.
- [Database Transactions](https://awesome-repositories.com/f/data-databases/database-transactions.md) — Ensures database consistency by executing schema updates within atomic transactions.
- [SQL String Compilations](https://awesome-repositories.com/f/data-databases/sql-generators/deferred-query-compilation/sql-string-compilations.md) — Translates high-level Python migration directives into raw SQL strings for auditing and manual execution.
- [Migration Directive Rendering](https://awesome-repositories.com/f/data-databases/sql-generators/sql-export-generators/migration-directive-rendering.md) — Converts high-level Python migration directives into raw SQL strings for auditing.

### Development Tools & Productivity

- [Database Schema Diffing Tools](https://awesome-repositories.com/f/development-tools-productivity/database-schema-diffing-tools.md) — Includes a utility to identify discrepancies between a live database schema and model metadata.
- [Migration Script Templates](https://awesome-repositories.com/f/development-tools-productivity/migration-script-templates.md) — Generates Python scripts from templates to define explicit database upgrade and downgrade paths.

### Part of an Awesome List

- [Database Clients](https://awesome-repositories.com/f/awesome-lists/data/database-clients.md) — Database migration tool for SQLAlchemy.
