sqlmeta.adapters.alembic
Alembic integration for sqlmeta.
This module provides functions to integrate sqlmeta with Alembic for database migrations. It enables comparing sqlmeta schemas with database schemas and generating Alembic operations.
Example
>>> from sqlmeta import Table, SqlColumn
>>> from sqlmeta.adapters.alembic import generate_operations
>>> from alembic.operations import Operations
>>>
>>> source_table = Table("users", columns=[...])
>>> target_table = Table("users", columns=[...])
>>> operations = generate_operations(source_table, target_table)
Functions
|
Generate a complete Alembic migration script. |
|
Generate Alembic operations from table comparison. |
|
Convert sqlmeta Table to Alembic CreateTableOp. |
- sqlmeta.adapters.alembic.to_alembic_table(table: Table) CreateTableOp[source]
Convert sqlmeta Table to Alembic CreateTableOp.
- Parameters:
table – sqlmeta Table object
- Returns:
Alembic CreateTableOp object
Example
>>> from sqlmeta import Table, SqlColumn >>> >>> table = Table("users", columns=[ ... SqlColumn("id", "INTEGER", is_primary_key=True), ... SqlColumn("email", "VARCHAR(255)", is_nullable=False), ... ]) >>> >>> create_op = to_alembic_table(table)
- sqlmeta.adapters.alembic.generate_operations(source_table: Table | None, target_table: Table | None, dialect: str | None = None) List[source]
Generate Alembic operations from table comparison.
Compares two table definitions and generates the necessary Alembic operations to migrate from source to target.
- Parameters:
source_table – Current table definition (None if table doesn’t exist)
target_table – Desired table definition (None if dropping table)
dialect – SQL dialect for comparison
- Returns:
List of Alembic operation objects
Example
>>> source = Table("users", columns=[ ... SqlColumn("id", "INTEGER", is_primary_key=True), ... SqlColumn("name", "VARCHAR(100)"), ... ]) >>> target = Table("users", columns=[ ... SqlColumn("id", "INTEGER", is_primary_key=True), ... SqlColumn("name", "VARCHAR(100)"), ... SqlColumn("email", "VARCHAR(255)", is_nullable=False), ... ]) >>> ops = generate_operations(source, target, dialect="postgresql") >>> # Results in: [AddColumnOp(...)]
- sqlmeta.adapters.alembic.generate_migration_script(source_tables: List[Table], target_tables: List[Table], dialect: str | None = None, message: str = 'Auto-generated migration') str[source]
Generate a complete Alembic migration script.
Compares two sets of tables and generates a complete migration script with upgrade() and downgrade() functions.
- Parameters:
source_tables – Current schema tables
target_tables – Desired schema tables
dialect – SQL dialect for comparison
message – Migration message/description
- Returns:
String containing the migration script
Example
>>> source = [Table("users", ...)] >>> target = [Table("users", ...), Table("posts", ...)] >>> script = generate_migration_script(source, target, "postgresql") >>> print(script)