duckplus.static_typed.select#

Helpers for assembling SELECT statements from typed expressions.

Attributes#

Classes#

_ColumnEntry

_ReplaceEntry

_ExcludeEntry

_StarEntry

SelectStatementBuilder

Fluent builder for composing SQL SELECT statements.

Functions#

_require_available_columns(→ frozenset[str])

_require_columns(→ frozenset[str])

_resolve_required_columns(→ frozenset[str])

Module Contents#

class duckplus.static_typed.select._ColumnEntry#
sql: str#
optional: bool#
required_columns: frozenset[str] | None#
render(available: frozenset[str] | None) str | None#
class duckplus.static_typed.select._ReplaceEntry#
sql: str#
optional: bool#
required_columns: frozenset[str] | None#
render(available: frozenset[str] | None) str | None#
class duckplus.static_typed.select._ExcludeEntry#
identifier: str#
sql: str#
optional: bool#
render(available: frozenset[str] | None) str | None#
class duckplus.static_typed.select._StarEntry#
replace_entries: tuple[_ReplaceEntry, Ellipsis]#
exclude_entries: tuple[_ExcludeEntry, Ellipsis]#
render(available: frozenset[str] | None) str#
duckplus.static_typed.select._SelectEntry#
duckplus.static_typed.select._require_available_columns(available: frozenset[str] | None) frozenset[str]#
duckplus.static_typed.select._require_columns(required: frozenset[str] | None) frozenset[str]#
duckplus.static_typed.select._resolve_required_columns(dependencies: frozenset[duckplus.static_typed.dependencies.ExpressionDependency]) frozenset[str]#
class duckplus.static_typed.select.SelectStatementBuilder#

Fluent builder for composing SQL SELECT statements.

__slots__ = ('_columns', '_from_clause', '_finalised')#
_columns: list[_SelectEntry] = []#
_from_clause: str | None = None#
_finalised = False#
column(expression: object, *, alias: str | None = None, if_exists: bool = False) SelectStatementBuilder#

Append a column expression to the SELECT list.

star(*, exclude: collections.abc.Iterable[str] | None = None, replace: collections.abc.Mapping[str, object] | collections.abc.Iterable[tuple[str, object]] | collections.abc.Iterable[duckplus.static_typed.expressions.base.AliasedExpression] | None = None, exclude_if_exists: collections.abc.Iterable[str] | None = None, replace_if_exists: collections.abc.Mapping[str, object] | collections.abc.Iterable[tuple[str, object]] | collections.abc.Iterable[duckplus.static_typed.expressions.base.AliasedExpression] | None = None) SelectStatementBuilder#

Append a * expression with optional modifiers.

from_(source: str) SelectStatementBuilder#

Define the FROM clause for the SELECT statement.

build(*, available_columns: collections.abc.Iterable[str] | None = None) str#

Render the accumulated SQL statement.

build_select_list(*, available_columns: collections.abc.Iterable[str] | None = None) str#

Render only the SELECT list for use with Relation.project.

_coerce_expression(expression: object) tuple[str, str | None, frozenset[duckplus.static_typed.dependencies.ExpressionDependency] | None]#
_ensure_mutable() None#
_normalise_replace_clauses(replace: collections.abc.Mapping[str, object] | collections.abc.Iterable[tuple[str, object]] | collections.abc.Iterable[duckplus.static_typed.expressions.base.AliasedExpression] | None, *, optional: bool) list[_ReplaceEntry]#
_normalise_exclude_identifiers(exclude: collections.abc.Iterable[str] | None, *, optional: bool) list[_ExcludeEntry]#