DDL¶
Data Definition Language builders for tables, indexes, views, and schemas.
Base¶
- class sqlspec.builder.DDLBuilder[source]¶
Bases:
QueryBuilderBase class for DDL builders (CREATE, DROP, ALTER, etc).
- build(dialect=None)[source]¶
Builds the SQL query string and parameters.
- Parameters:
dialect¶ (
Union[str,Dialect,Type[Dialect],None]) – Optional dialect override. If provided, generates SQL for this dialect instead of the builder’s default dialect.- Returns:
A dataclass containing the SQL string and parameters.
- Return type:
Examples
# Use builder’s default dialect query = sql.select(“*”).from_(“products”) result = query.build()
# Override dialect at build time postgres_sql = query.build(dialect=”postgres”) mysql_sql = query.build(dialect=”mysql”)
Tables¶
- class sqlspec.builder.CreateTable[source]¶
Bases:
DDLBuilderBuilder for CREATE TABLE statements with columns and constraints.
Example
- builder = (
CreateTable(“users”) .column(“id”, “SERIAL”, primary_key=True) .column(“email”, “VARCHAR(255)”, not_null=True, unique=True) .column(“created_at”, “TIMESTAMP”, default=”CURRENT_TIMESTAMP”) .foreign_key_constraint(“org_id”, “organizations”, “id”)
) sql = builder.build().sql
- property columns: list[ColumnDefinition]¶
Get the list of column definitions for this table.
- Returns:
List of ColumnDefinition objects.
- column(name, dtype, default=None, not_null=False, primary_key=False, unique=False, auto_increment=False, comment=None, check=None, generated=None, collate=None)[source]¶
Add a column definition to the table.
- Return type:
Self
- class sqlspec.builder.CreateTableAsSelect[source]¶
Bases:
DDLBuilderBuilder for CREATE TABLE [IF NOT EXISTS] … AS SELECT … (CTAS).
Example
- builder = (
CreateTableAsSelectBuilder() .name(“my_table”) .if_not_exists() .columns(“id”, “name”) .as_select(select_builder)
) sql = builder.build().sql
- - name(table_name
str): Set the table name.
- - if_not_exists()
Add IF NOT EXISTS.
- - columns(*cols
str): Set explicit column list (optional).
- - as_select(select_query)
Set the SELECT source (SQL, SelectBuilder, or str).
- class sqlspec.builder.AlterTable[source]¶
Bases:
DDLBuilderBuilder for ALTER TABLE operations.
Example
- builder = (
AlterTable(“users”) .add_column(“email”, “VARCHAR(255)”, not_null=True) .drop_column(“old_field”) .add_constraint(“check_age”, “CHECK (age >= 18)”)
)
- add_column(name, dtype, default=None, not_null=False, unique=False, comment=None, after=None, first=False)[source]¶
Add a new column to the table.
- Return type:
Self
- alter_column_type(name, new_type, using=None)[source]¶
Change the type of an existing column.
- Return type:
Self
- add_constraint(constraint_type, columns=None, name=None, references_table=None, references_columns=None, condition=None, on_delete=None, on_update=None)[source]¶
Add a constraint to the table.
- Parameters:
constraint_type¶ (
str) – Type of constraint (‘PRIMARY KEY’, ‘FOREIGN KEY’, ‘UNIQUE’, ‘CHECK’)columns¶ (
str|list[str] |None) – Column(s) for the constraint (not needed for CHECK)references_table¶ (
str|None) – Table referenced by foreign keyreferences_columns¶ (
str|list[str] |None) – Columns referenced by foreign keycondition¶ (
str|ColumnExpression|None) – CHECK constraint condition
- Return type:
Self
- class sqlspec.builder.DropTable[source]¶
Bases:
DDLBuilderBuilder for DROP TABLE [IF EXISTS] … [CASCADE|RESTRICT].
- class sqlspec.builder.RenameTable[source]¶
Bases:
DDLBuilderBuilder for ALTER TABLE … RENAME TO … statements.
- class sqlspec.builder.Truncate[source]¶
Bases:
DDLBuilderBuilder for TRUNCATE TABLE … [CASCADE|RESTRICT] [RESTART IDENTITY|CONTINUE IDENTITY].
Column and Constraint Definitions¶
- class sqlspec.builder._ddl.ColumnDefinition[source]¶
Bases:
objectColumn definition for CREATE TABLE.
- class sqlspec.builder._ddl.ConstraintDefinition[source]¶
Bases:
objectConstraint definition for CREATE TABLE.
Indexes¶
- class sqlspec.builder.CreateIndex[source]¶
Bases:
DDLBuilderBuilder for CREATE [UNIQUE] INDEX [IF NOT EXISTS] … ON … (…).
- class sqlspec.builder.DropIndex[source]¶
Bases:
DDLBuilderBuilder for DROP INDEX [IF EXISTS] … [ON table] [CASCADE|RESTRICT].
Views¶
- class sqlspec.builder.CreateView[source]¶
Bases:
DDLBuilderBuilder for CREATE VIEW [IF NOT EXISTS] … AS SELECT …
- class sqlspec.builder.CreateMaterializedView[source]¶
Bases:
DDLBuilderBuilder for CREATE MATERIALIZED VIEW [IF NOT EXISTS] … AS SELECT …
- class sqlspec.builder.DropView[source]¶
Bases:
DDLBuilderBuilder for DROP VIEW [IF EXISTS] … [CASCADE|RESTRICT].
- class sqlspec.builder.DropMaterializedView[source]¶
Bases:
DDLBuilderBuilder for DROP MATERIALIZED VIEW [IF EXISTS] … [CASCADE|RESTRICT].
Schemas¶
- class sqlspec.builder.CreateSchema[source]¶
Bases:
DDLBuilderBuilder for CREATE SCHEMA [IF NOT EXISTS] schema_name [AUTHORIZATION user_name].
- class sqlspec.builder.DropSchema[source]¶
Bases:
DDLBuilderBuilder for DROP SCHEMA [IF EXISTS] … [CASCADE|RESTRICT].