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_migration_script(source_tables, ...)

Generate a complete Alembic migration script.

generate_operations(source_table, target_table)

Generate Alembic operations from table comparison.

to_alembic_table(table)

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)