class documentation

class SelectBase(roles.SelectStatementRole, roles.DMLSelectRole, roles.CompoundElementRole, roles.InElementRole, HasCTE, Executable, SupportsCloneAnnotations, Selectable):

Known subclasses: sqlalchemy.sql.selectable.GenerativeSelect, sqlalchemy.sql.selectable.TextualSelect, sqlalchemy.orm.query.FromStatement, sqlalchemy.sql.selectable.SelectStatementGrouping

View In Hierarchy

Base class for SELECT statements.

This includes _expression.Select, _expression.CompoundSelect and _expression.TextualSelect.

Method ​_ensure​_disambiguated​_names Ensure that the names generated by this selectbase will be disambiguated in some way, if possible.
Method ​_generate​_fromclause​_column​_proxies Undocumented
Method ​_implicit​_subquery Undocumented
Method ​_refresh​_for​_new​_column Undocumented
Method alias Return a named subquery against this _expression.SelectBase.
Method as​_scalar Undocumented
Method exists Return an _sql.Exists representation of this selectable, which can be used as a column expression.
Method label Return a 'scalar' representation of this selectable, embedded as a subquery with a label.
Method lateral Return a LATERAL alias of this _expression.Selectable.
Method scalar​_subquery Return a 'scalar' representation of this selectable, which can be used as a column expression.
Method select Undocumented
Method subquery Return a subquery of this _expression.SelectBase.
Class Variable ​_is​_select​_statement Undocumented
Class Variable is​_select Undocumented
Property ​_all​_selected​_columns A sequence of expressions that correspond to what is rendered in the columns clause, including _sql.TextClause constructs.
Property ​_from​_objects Undocumented
Property c Undocumented
Property columns Undocumented
Property exported​_columns No summary
Property selected​_columns A _expression.ColumnCollection representing the columns that this SELECT statement or similar construct returns in its result set.

Inherited from SelectStatementRole:

Class Variable ​_role​_name Undocumented

Inherited from StatementRole (via SelectStatementRole):

Class Variable ​_propagate​_attrs Undocumented

Inherited from SQLRole (via SelectStatementRole, StatementRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from SQLRole (via SelectStatementRole, ReturnsRowsRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from DMLSelectRole:

Class Variable ​_role​_name Undocumented

Inherited from SQLRole (via DMLSelectRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from CompoundElementRole:

Class Variable ​_role​_name Undocumented

Inherited from AllowsLambdaRole (via CompoundElementRole):

Class Variable allows​_lambda Undocumented

Inherited from SQLRole (via CompoundElementRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from InElementRole:

Class Variable ​_role​_name Undocumented

Inherited from SQLRole (via InElementRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from HasCTE:

Method add​_cte Add a _sql.CTE to this statement object that will be independently rendered even if not referenced in the statement otherwise.
Method cte Return a new _expression.CTE, or Common Table Expression instance.
Class Variable ​_has​_ctes​_traverse​_internals Undocumented
Class Variable ​_independent​_ctes Undocumented

Inherited from ReturnsRowsRole (via HasCTE, HasCTERole):

Class Variable ​_role​_name Undocumented

Inherited from SQLRole (via HasCTE, HasCTERole, ReturnsRowsRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from Executable:

Method ​_add​_context​_option Add a context option to this statement.
Method ​_set​_compile​_options Assign the compile options to a new value.
Method ​_update​_compile​_options update the _compile_options with new keys.
Method execute Compile and execute this .Executable.
Method execution​_options Set non-SQL options for the statement which take effect during execution.
Method get​_execution​_options Get the non-SQL options which will take effect during execution.
Method options Apply options to this statement.
Method scalar Compile and execute this .Executable, returning the result's scalar representation.
Class Variable ​_bind Undocumented
Class Variable ​_executable​_traverse​_internals Undocumented
Class Variable ​_with​_context​_options Undocumented
Class Variable ​_with​_options Undocumented
Class Variable is​_delete Undocumented
Class Variable is​_dml Undocumented
Class Variable is​_insert Undocumented
Class Variable is​_text Undocumented
Class Variable is​_update Undocumented
Class Variable supports​_execution Undocumented
Instance Variable ​_compile​_options Undocumented
Instance Variable ​_execution​_options Undocumented
Property ​_effective​_plugin​_target Undocumented
Property bind Returns the _engine.Engine or _engine.Connection to which this .Executable is bound, or None if none found.

Inherited from StatementRole (via Executable):

Class Variable ​_propagate​_attrs Undocumented
Class Variable ​_role​_name Undocumented

Inherited from SQLRole (via Executable, StatementRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from Generative (via Executable):

Method ​_generate Undocumented

Inherited from SupportsCloneAnnotations:

Method ​_annotate return a copy of this ClauseElement with annotations updated by the given dictionary.
Method ​_deannotate return a copy of this _expression.ClauseElement with annotations removed.
Method ​_with​_annotations return a copy of this ClauseElement with annotations replaced by the given dictionary.
Class Variable ​_clone​_annotations​_traverse​_internals Undocumented

Inherited from SupportsAnnotations (via SupportsCloneAnnotations):

Property ​_annotations​_cache​_key Undocumented

Inherited from Selectable:

Method corresponding​_column No summary
Method replace​_selectable Replace all occurrences of _expression.FromClause 'old' with the given _expression.Alias object, returning a copy of this _expression.FromClause.
Class Variable __visit​_name__ Undocumented
Class Variable is​_selectable Undocumented

Inherited from ReturnsRows (via Selectable):

Class Variable ​_is​_from​_clause Undocumented
Class Variable ​_is​_lateral Undocumented
Class Variable ​_is​_returns​_rows Undocumented
Property selectable Undocumented

Inherited from ReturnsRowsRole (via Selectable, ReturnsRows):

Class Variable ​_role​_name Undocumented

Inherited from SQLRole (via Selectable, ReturnsRows, ReturnsRowsRole):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from ClauseElement (via Selectable, ReturnsRows):

Method compare Compare this _expression.ClauseElement to the given _expression.ClauseElement.
Method compile Compile this SQL expression.
Method params Return a copy with _expression.bindparam elements replaced.
Method self​_group Apply a 'grouping' to this _expression.ClauseElement.
Method unique​_params Return a copy with _expression.bindparam elements replaced.
Method __bool__ Undocumented
Method __getstate__ Undocumented
Method __invert__ Undocumented
Method __repr__ Undocumented
Method __str__ Undocumented
Method ​_clone Create a shallow copy of this ClauseElement.
Method ​_cloned​_set Return the set consisting all cloned ancestors of this ClauseElement.
Method ​_compile​_w​_cache Undocumented
Method ​_compiler Return a compiler appropriate for this ClauseElement, given a Dialect.
Method ​_execute​_on​_connection Undocumented
Method ​_negate Undocumented
Method ​_negate​_in​_binary a hook to allow the right side of a binary expression to respond to a negation of the binary expression.
Method ​_replace​_params Undocumented
Method ​_set​_propagate​_attrs Undocumented
Method ​_ungroup Return this _expression.ClauseElement without any groupings.
Method ​_with​_binary​_element​_type in the context of binary expression, convert the type of this object to the one given.
Class Variable ​_cache​_key​_traversal Undocumented
Class Variable ​_is​_bind​_parameter Undocumented
Class Variable ​_is​_clause​_list Undocumented
Class Variable ​_is​_clone​_of Undocumented
Class Variable ​_is​_from​_container Undocumented
Class Variable ​_is​_immutable Undocumented
Class Variable ​_is​_lambda​_element Undocumented
Class Variable ​_is​_select​_container Undocumented
Class Variable ​_is​_singleton​_constant Undocumented
Class Variable ​_is​_text​_clause Undocumented
Class Variable ​_is​_textual Undocumented
Class Variable ​_order​_by​_label​_element Undocumented
Class Variable bind Undocumented
Class Variable description Undocumented
Class Variable is​_clause​_element Undocumented
Class Variable stringify​_dialect Undocumented
Class Variable supports​_execution Undocumented
Instance Variable ​_propagate​_attrs like annotations, however these propagate outwards liberally as SQL constructs are built, and are set up at construction time.
Property ​_constructor return the 'constructor' for this ClauseElement.
Property entity​_namespace Undocumented

Inherited from SQLRole (via Selectable, ReturnsRows, ClauseElement):

Class Variable allows​_lambda Undocumented
Class Variable uses​_inspection Undocumented

Inherited from SupportsWrappingAnnotations (via Selectable, ReturnsRows, ClauseElement):

Method ​_annotate return a copy of this ClauseElement with annotations updated by the given dictionary.
Method ​_deannotate return a copy of this _expression.ClauseElement with annotations removed.
Method ​_with​_annotations return a copy of this ClauseElement with annotations replaced by the given dictionary.

Inherited from SupportsAnnotations (via Selectable, ReturnsRows, ClauseElement, SupportsWrappingAnnotations):

Property ​_annotations​_cache​_key Undocumented

Inherited from MemoizedHasCacheKey (via Selectable, ReturnsRows, ClauseElement):

Method ​_generate​_cache​_key return a cache key.

Inherited from HasCacheKey (via Selectable, ReturnsRows, ClauseElement, MemoizedHasCacheKey):

Class Variable inherit​_cache Indicate if this .HasCacheKey instance should make use of the cache key generation scheme used by its immediate superclass.
Class Method ​_generate​_cache​_attrs generate cache key dispatcher for a new class.
Class Method ​_generate​_cache​_key​_for​_object Undocumented
Method ​_gen​_cache​_key return an optional cache key.
Class Variable __slots__ Undocumented
Class Variable ​_hierarchy​_supports​_caching private attribute which may be set to False to prevent the inherit_cache warning from being emitted for a hierarchy of subclasses.
Class Variable ​_is​_has​_cache​_key Undocumented

Inherited from HasCopyInternals (via Selectable, ReturnsRows, ClauseElement):

Method ​_copy​_internals Reassign internal elements to be clones of themselves.

Inherited from Traversible (via Selectable, ReturnsRows, ClauseElement):

Method get​_children Return immediate child .visitors.Traversible elements of this .visitors.Traversible.
Method __class​_getitem__ Undocumented
def _ensure_disambiguated_names(self):
@HasMemoized.memoized_attribute
def _implicit_subquery(self):

Undocumented

def _refresh_for_new_column(self, column):
def alias(self, name=None, flat=False):

Return a named subquery against this _expression.SelectBase.

For a _expression.SelectBase (as opposed to a _expression.FromClause), this returns a .Subquery object which behaves mostly the same as the _expression.Alias object that is used with a _expression.FromClause.

Changed in version 1.4: The _expression.SelectBase.alias method is now a synonym for the _expression.SelectBase.subquery method.
@util.deprecated('1.4', 'The :meth:`_expression.SelectBase.as_scalar` method is deprecated and will be removed in a future release. Please refer to :meth:`_expression.SelectBase.scalar_subquery`.')
def as_scalar(self):

Undocumented

def exists(self):

Return an _sql.Exists representation of this selectable, which can be used as a column expression.

The returned object is an instance of _sql.Exists.

See Also

_sql.exists

:ref:`tutorial_exists` - in the :term:`2.0 style` tutorial.

New in version 1.4.
def label(self, name):

Return a 'scalar' representation of this selectable, embedded as a subquery with a label.

See Also

_expression.SelectBase.as_scalar.

def lateral(self, name=None):

Return a LATERAL alias of this _expression.Selectable.

The return value is the _expression.Lateral construct also provided by the top-level _expression.lateral function.

New in version 1.1.

See Also

:ref:`lateral_selects` - overview of usage.

def scalar_subquery(self):

Return a 'scalar' representation of this selectable, which can be used as a column expression.

The returned object is an instance of _sql.ScalarSelect.

Typically, a select statement which has only one column in its columns clause is eligible to be used as a scalar expression. The scalar subquery can then be used in the WHERE clause or columns clause of an enclosing SELECT.

Note that the scalar subquery differentiates from the FROM-level subquery that can be produced using the _expression.SelectBase.subquery method.

See Also

:ref:`tutorial_scalar_subquery` - in the 2.0 tutorial

:ref:`scalar_selects` - in the 1.x tutorial

@util.deprecated('1.4', 'The :meth:`_expression.SelectBase.select` method is deprecated and will be removed in a future release; this method implicitly creates a subquery that should be explicit. Please call :meth:`_expression.SelectBase.subquery` first in order to create a subquery, which then can be selected.')
def select(self, *arg, **kw):

Undocumented

def subquery(self, name=None):

Return a subquery of this _expression.SelectBase.

A subquery is from a SQL perspective a parenthesized, named construct that can be placed in the FROM clause of another SELECT statement.

Given a SELECT statement such as:

stmt = select(table.c.id, table.c.name)

The above statement might look like:

SELECT table.id, table.name FROM table

The subquery form by itself renders the same way, however when embedded into the FROM clause of another SELECT statement, it becomes a named sub-element:

subq = stmt.subquery()
new_stmt = select(subq)

The above renders as:

SELECT anon_1.id, anon_1.name
FROM (SELECT table.id, table.name FROM table) AS anon_1

Historically, _expression.SelectBase.subquery is equivalent to calling the _expression.FromClause.alias method on a FROM object; however, as a _expression.SelectBase object is not directly FROM object, the _expression.SelectBase.subquery method provides clearer semantics.

New in version 1.4.
_is_select_statement: bool =
is_select: bool =
@property
_all_selected_columns =

A sequence of expressions that correspond to what is rendered in the columns clause, including _sql.TextClause constructs.

New in version 1.4.12.

See Also

_sql.SelectBase.exported_columns

@property
@util.deprecated('1.4', 'The :attr:`_expression.SelectBase.c` and :attr:`_expression.SelectBase.columns` attributes are deprecated and will be removed in a future release; these attributes implicitly create a subquery that should be explicit. Please call :meth:`_expression.SelectBase.subquery` first in order to create a subquery, which then contains this attribute. To access the columns that this SELECT object SELECTs from, use the :attr:`_expression.SelectBase.selected_columns` attribute.')
c =

Undocumented

@property
columns =

Undocumented

@property
exported_columns =

A _expression.ColumnCollection that represents the "exported" columns of this _expression.Selectable, not including _sql.TextClause constructs.

The "exported" columns for a _expression.SelectBase object are synonymous with the _expression.SelectBase.selected_columns collection.

New in version 1.4.

See Also

_expression.Select.exported_columns

_expression.Selectable.exported_columns

_expression.FromClause.exported_columns

@property
selected_columns =

A _expression.ColumnCollection representing the columns that this SELECT statement or similar construct returns in its result set.

This collection differs from the _expression.FromClause.columns collection of a _expression.FromClause in that the columns within this collection cannot be directly nested inside another SELECT statement; a subquery must be applied first which provides for the necessary parenthesization required by SQL.

Note

The _sql.SelectBase.selected_columns collection does not include expressions established in the columns clause using the _sql.text construct; these are silently omitted from the collection. To use plain textual column expressions inside of a _sql.Select construct, use the _sql.literal_column construct.

See Also

_sql.Select.selected_columns

New in version 1.4.