sqlmeta.adapters

Adapters for integrating sqlmeta with other libraries.

Available adapters: - sqlalchemy: SQLAlchemy integration - pydantic: Pydantic integration - alembic: Alembic migration integration

sqlmeta.adapters.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)
sqlmeta.adapters.from_sqlalchemy(sa_table: Table) Table[source]

Convert SQLAlchemy Table to sqlmeta Table.

Parameters:

sa_table – SQLAlchemy Table object

Returns:

sqlmeta Table object

sqlmeta.adapters.get_create_ddl(table: Table, dialect: str = 'postgresql') str[source]

Get CREATE TABLE DDL for a sqlmeta Table.

Parameters:
  • table – sqlmeta Table object

  • dialect – SQL dialect name

Returns:

CREATE TABLE DDL string

sqlmeta.adapters.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())
sqlmeta.adapters.to_pydantic_schema(table: Table) Dict[str, Any][source]

Convert sqlmeta Table to Pydantic JSON Schema.

Parameters:

table – sqlmeta Table object

Returns:

JSON Schema dictionary

sqlmeta.adapters.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.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.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)

Modules

alembic

Alembic integration for sqlmeta.

pydantic

Pydantic integration for sqlmeta.

sqlalchemy

SQLAlchemy integration for sqlmeta.