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 integration for sqlmeta. |
|
Pydantic integration for sqlmeta. |
|
SQLAlchemy integration for sqlmeta. |