Adapters
This module provides integrations with popular Python frameworks.
SQLAlchemy Adapter
SQLAlchemy integration for sqlmeta.
This module provides functions to convert between sqlmeta objects and SQLAlchemy Table objects.
Example
>>> from sqlmeta import Table, SqlColumn
>>> from sqlmeta.adapters.sqlalchemy import to_sqlalchemy
>>> from sqlalchemy import MetaData
>>>
>>> table = Table("users", columns=[...])
>>> metadata = MetaData()
>>> sa_table = to_sqlalchemy(table, metadata)
- sqlmeta.adapters.sqlalchemy.to_sqlalchemy(table: Table, metadata: MetaData | None = None) Table[source]
Convert sqlmeta Table to SQLAlchemy Table.
- Parameters:
table – sqlmeta Table object
metadata – SQLAlchemy MetaData instance (optional)
- Returns:
SQLAlchemy Table object
Example
>>> from sqlmeta import Table, SqlColumn >>> from sqlalchemy import MetaData >>> >>> table = Table("users", columns=[ ... SqlColumn("id", "INTEGER", is_primary_key=True), ... SqlColumn("email", "VARCHAR(255)", is_nullable=False), ... ]) >>> >>> metadata = MetaData() >>> sa_table = to_sqlalchemy(table, metadata)
Pydantic Adapter
Pydantic integration for sqlmeta.
This module provides functions to convert sqlmeta Table objects to Pydantic BaseModel classes.
Example
>>> from sqlmeta import Table, SqlColumn
>>> from sqlmeta.adapters.pydantic import to_pydantic
>>>
>>> table = Table("users", columns=[...])
>>> UserModel = to_pydantic(table)
>>> user = UserModel(id=1, email="test@example.com")
- sqlmeta.adapters.pydantic.to_pydantic(table: Table, model_name: str | None = None, use_title_case: bool = True) Type[BaseModel][source]
Convert sqlmeta Table to Pydantic BaseModel.
- Parameters:
table – sqlmeta Table object
model_name – Model name (defaults to table name in PascalCase)
use_title_case – Convert snake_case to PascalCase
- Returns:
Pydantic BaseModel class
Example
>>> from sqlmeta import Table, SqlColumn >>> >>> table = Table("users", columns=[ ... SqlColumn("id", "INTEGER", is_primary_key=True), ... SqlColumn("email", "VARCHAR(255)", is_nullable=False), ... SqlColumn("name", "VARCHAR(100)"), ... ]) >>> >>> UserModel = to_pydantic(table) >>> user = UserModel(id=1, email="test@example.com", name="John") >>> print(user.model_dump_json())
Alembic Adapter
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)
- 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)