class documentation

Represent an element that can be used within the ``FROM`` clause of a ``SELECT`` statement. The most common forms of :class:`_expression.FromClause` are the :class:`_schema.Table` and the :func:`_expression.select` constructs. Key features common to all :class:`_expression.FromClause` objects include: * a :attr:`.c` collection, which provides per-name access to a collection of :class:`_expression.ColumnElement` objects. * a :attr:`.primary_key` attribute, which is a collection of all those :class:`_expression.ColumnElement` objects that indicate the ``primary_key`` flag. * Methods to generate various derivations of a "from" clause, including :meth:`_expression.FromClause.alias`, :meth:`_expression.FromClause.join`, :meth:`_expression.FromClause.select`.

Method alias Return an alias of this :class:`_expression.FromClause`.
Method is_derived_from Return ``True`` if this :class:`_expression.FromClause` is 'derived' from the given ``FromClause``.
Method join Return a :class:`_expression.Join` from this :class:`_expression.FromClause` to another :class:`FromClause`.
Method outerjoin Return a :class:`_expression.Join` from this :class:`_expression.FromClause` to another :class:`FromClause`, with the "isouter" flag set to True.
Method select Return a SELECT of this :class:`_expression.FromClause`.
Method self_group Apply a 'grouping' to this :class:`_expression.ClauseElement`.
Method tablesample Return a TABLESAMPLE alias of this :class:`_expression.FromClause`.
Class Variable __visit_name__ Undocumented
Class Variable is_selectable Undocumented
Class Variable named_with_column Undocumented
Class Variable schema Define the 'schema' attribute for this :class:`_expression.FromClause`.
Instance Variable foreign_keys Return the collection of :class:`_schema.ForeignKey` marker objects which this FromClause references.
Instance Variable primary_key Return the iterable collection of :class:`_schema.Column` objects which comprise the primary key of this :class:`_selectable.FromClause`.
Property c A synonym for :attr:`.FromClause.columns`
Property columns A named-based collection of :class:`_expression.ColumnElement` objects maintained by this :class:`_expression.FromClause`.
Property description A brief description of this :class:`_expression.FromClause`.
Property entity_namespace Return a namespace used for name-based access in SQL expressions.
Property exported_columns A :class:`_expression.ColumnCollection` that represents the "exported" columns of this :class:`_expression.Selectable`.
Method _anonymous_fromclause Undocumented
Method _generate_fromclause_column_proxies Populate columns into an :class:`.AliasedReturnsRows` object.
Method _init_collections Undocumented
Method _is_lexical_equivalent Return ``True`` if this :class:`_expression.FromClause` and the other represent the same lexical identity.
Method _populate_column_collection Called on subclasses to establish the .c collection.
Method _refresh_for_new_column Given a column added to the .c collection of an underlying selectable, produce the local version of that column, assuming this selectable ultimately should proxy this column.
Method _reset_column_collection Reset the attributes linked to the ``FromClause.c`` attribute.
Class Variable _is_clone_of Undocumented
Class Variable _is_from_clause Undocumented
Class Variable _is_join Undocumented
Class Variable _use_schema_map Undocumented
Instance Variable _columns Undocumented
Property _cols_populated Undocumented
Property _hide_froms Undocumented
Property _select_iterable Undocumented

Inherited from AnonymizedFromClauseRole:

Class Variable __slots__ Undocumented

Inherited from FromClauseRole (via AnonymizedFromClauseRole, StrictFromClauseRole):

Class Variable _is_subquery Undocumented
Class Variable _role_name Undocumented

Inherited from AllowsLambdaRole (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole):

Class Variable allows_lambda Undocumented

Inherited from UsesInspection (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole):

Class Variable uses_inspection Undocumented
Class Variable _post_inspect Undocumented

Inherited from Selectable (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole):

Method corresponding_column Given a :class:`_expression.ColumnElement`, return the exported :class:`_expression.ColumnElement` object from the :attr:`_expression.Selectable.exported_columns` collection of this :class:`_expression...
Method lateral Return a LATERAL alias of this :class:`_expression.Selectable`.
Method replace_selectable Replace all occurrences of :class:`_expression.FromClause` 'old' with the given :class:`_expression.Alias` object, returning a copy of this :class:`_expression.FromClause`.

Inherited from ReturnsRows (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole, Selectable):

Property selectable Undocumented
Class Variable _is_lateral Undocumented
Class Variable _is_returns_rows Undocumented
Class Variable _is_select_base Undocumented
Class Variable _is_select_statement Undocumented
Property _all_selected_columns A sequence of column expression objects that represents the "selected" columns of this :class:`_expression.ReturnsRows`.

Inherited from DQLDMLClauseElement (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole, Selectable, ReturnsRows, ReturnsRowsRole, SQLRole):

Method compile Compile this SQL expression.
Method _compiler Return a compiler appropriate for this ClauseElement, given a Dialect.

Inherited from ClauseElement (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole, Selectable, ReturnsRows, ReturnsRowsRole, SQLRole, DQLDMLClauseElement):

Method __bool__ Undocumented
Method __getstate__ Undocumented
Method __invert__ Undocumented
Method __repr__ Undocumented
Method compare Compare this :class:`_expression.ClauseElement` to the given :class:`_expression.ClauseElement`.
Method get_children Return immediate child :class:`.visitors.HasTraverseInternals` elements of this :class:`.visitors.HasTraverseInternals`.
Method params Return a copy with :func:`_expression.bindparam` elements replaced.
Method unique_params Return a copy with :func:`_expression.bindparam` elements replaced.
Class Variable is_clause_element Undocumented
Class Variable is_dml Undocumented
Class Variable negation_clause 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 _execute_on_connection Undocumented
Method _execute_on_scalar an additional hook for subclasses to provide a different implementation for connection.scalar() vs. connection.execute().
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 :class:`_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 _gen_static_annotations_cache_key Undocumented
Class Variable _is_bind_parameter Undocumented
Class Variable _is_clause_list Undocumented
Class Variable _is_column_element Undocumented
Class Variable _is_from_container Undocumented
Class Variable _is_immutable Undocumented
Class Variable _is_keyed_column_element Undocumented
Class Variable _is_lambda_element Undocumented
Class Variable _is_select_container Undocumented
Class Variable _is_singleton_constant Undocumented
Class Variable _is_star Undocumented
Class Variable _is_table Undocumented
Class Variable _is_text_clause Undocumented
Class Variable _is_textual 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 _from_objects Undocumented
Property _order_by_label_element Undocumented

Inherited from SupportsWrappingAnnotations (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole, Selectable, ReturnsRows, ReturnsRowsRole, SQLRole, DQLDMLClauseElement, ClauseElement):

Method _annotate return a copy of this ClauseElement with annotations updated by the given dictionary.
Method _deannotate return a copy of this :class:`_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 AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole, Selectable, ReturnsRows, ReturnsRowsRole, SQLRole, DQLDMLClauseElement, ClauseElement, SupportsWrappingAnnotations):

Class Variable proxy_set Undocumented
Method _gen_annotations_cache_key Undocumented
Property _annotations_cache_key Undocumented

Inherited from MemoizedHasCacheKey (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole, Selectable, ReturnsRows, ReturnsRowsRole, SQLRole, DQLDMLClauseElement, ClauseElement, SupportsWrappingAnnotations, SupportsAnnotations):

Method _generate_cache_key return a cache key.

Inherited from HasCacheKey (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole, Selectable, ReturnsRows, ReturnsRowsRole, SQLRole, DQLDMLClauseElement, ClauseElement, SupportsWrappingAnnotations, SupportsAnnotations, MemoizedHasCacheKey):

Class Variable inherit_cache Indicate if this :class:`.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 _generated_cache_key_traversal 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 AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole, Selectable, ReturnsRows, ReturnsRowsRole, SQLRole, DQLDMLClauseElement, ClauseElement, SupportsWrappingAnnotations, SupportsAnnotations, MemoizedHasCacheKey, HasCacheKey):

Method _copy_internals Reassign internal elements to be clones of themselves.

Inherited from HasTraverseInternals (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole, Selectable, ReturnsRows, ReturnsRowsRole, SQLRole, DQLDMLClauseElement, ClauseElement, SupportsWrappingAnnotations, SupportsAnnotations, MemoizedHasCacheKey, HasCacheKey, HasCopyInternals, ExternallyTraversible):

Class Variable _traverse_internals Undocumented

Inherited from CompilerElement (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole, Selectable, ReturnsRows, ReturnsRowsRole, SQLRole, DQLDMLClauseElement, ClauseElement, SupportsWrappingAnnotations, SupportsAnnotations, MemoizedHasCacheKey, HasCacheKey, HasCopyInternals, ExternallyTraversible, HasTraverseInternals):

Method __str__ Undocumented
Class Variable stringify_dialect Undocumented
Class Variable supports_execution Undocumented

Inherited from Visitable (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, JoinTargetRole, AllowsLambdaRole, UsesInspection, ColumnListRole, StructuralRole, Selectable, ReturnsRows, ReturnsRowsRole, SQLRole, DQLDMLClauseElement, ClauseElement, SupportsWrappingAnnotations, SupportsAnnotations, MemoizedHasCacheKey, HasCacheKey, HasCopyInternals, ExternallyTraversible, HasTraverseInternals, CompilerElement):

Method __class_getitem__ Undocumented
Method __init_subclass__ Undocumented
Class Method _generate_compiler_dispatch Undocumented
Method _compiler_dispatch Undocumented
Class Variable _original_compiler_dispatch Undocumented
def alias(self, name: Optional[str] = None, flat: bool = False) -> NamedFromClause: (source)

Return an alias of this :class:`_expression.FromClause`. E.g.:: a2 = some_table.alias('a2') The above code creates an :class:`_expression.Alias` object which can be used as a FROM clause in any SELECT statement. .. seealso:: :ref:`tutorial_using_aliases` :func:`_expression.alias`

def is_derived_from(self, fromclause: Optional[FromClause]) -> bool: (source)

Return ``True`` if this :class:`_expression.FromClause` is 'derived' from the given ``FromClause``. An example would be an Alias of a Table is derived from that Table.

def join(self, right: _FromClauseArgument, onclause: Optional[_ColumnExpressionArgument[bool]] = None, isouter: bool = False, full: bool = False) -> Join: (source)

Return a :class:`_expression.Join` from this :class:`_expression.FromClause` to another :class:`FromClause`. E.g.:: from sqlalchemy import join j = user_table.join(address_table, user_table.c.id == address_table.c.user_id) stmt = select(user_table).select_from(j) would emit SQL along the lines of:: SELECT user.id, user.name FROM user JOIN address ON user.id = address.user_id :param right: the right side of the join; this is any :class:`_expression.FromClause` object such as a :class:`_schema.Table` object, and may also be a selectable-compatible object such as an ORM-mapped class. :param onclause: a SQL expression representing the ON clause of the join. If left at ``None``, :meth:`_expression.FromClause.join` will attempt to join the two tables based on a foreign key relationship. :param isouter: if True, render a LEFT OUTER JOIN, instead of JOIN. :param full: if True, render a FULL OUTER JOIN, instead of LEFT OUTER JOIN. Implies :paramref:`.FromClause.join.isouter`. .. versionadded:: 1.1 .. seealso:: :func:`_expression.join` - standalone function :class:`_expression.Join` - the type of object produced

def outerjoin(self, right: _FromClauseArgument, onclause: Optional[_ColumnExpressionArgument[bool]] = None, full: bool = False) -> Join: (source)

Return a :class:`_expression.Join` from this :class:`_expression.FromClause` to another :class:`FromClause`, with the "isouter" flag set to True. E.g.:: from sqlalchemy import outerjoin j = user_table.outerjoin(address_table, user_table.c.id == address_table.c.user_id) The above is equivalent to:: j = user_table.join( address_table, user_table.c.id == address_table.c.user_id, isouter=True) :param right: the right side of the join; this is any :class:`_expression.FromClause` object such as a :class:`_schema.Table` object, and may also be a selectable-compatible object such as an ORM-mapped class. :param onclause: a SQL expression representing the ON clause of the join. If left at ``None``, :meth:`_expression.FromClause.join` will attempt to join the two tables based on a foreign key relationship. :param full: if True, render a FULL OUTER JOIN, instead of LEFT OUTER JOIN. .. versionadded:: 1.1 .. seealso:: :meth:`_expression.FromClause.join` :class:`_expression.Join`

def select(self) -> Select[Any]: (source)

Return a SELECT of this :class:`_expression.FromClause`. e.g.:: stmt = some_table.select().where(some_table.c.id == 5) .. seealso:: :func:`_expression.select` - general purpose method which allows for arbitrary column lists.

def self_group(self, against: Optional[OperatorType] = None) -> Union[FromGrouping, Self]: (source)

Apply a 'grouping' to this :class:`_expression.ClauseElement`. This method is overridden by subclasses to return a "grouping" construct, i.e. parenthesis. In particular it's used by "binary" expressions to provide a grouping around themselves when placed into a larger expression, as well as by :func:`_expression.select` constructs when placed into the FROM clause of another :func:`_expression.select`. (Note that subqueries should be normally created using the :meth:`_expression.Select.alias` method, as many platforms require nested SELECT statements to be named). As expressions are composed together, the application of :meth:`self_group` is automatic - end-user code should never need to use this method directly. Note that SQLAlchemy's clause constructs take operator precedence into account - so parenthesis might not be needed, for example, in an expression like ``x OR (y AND z)`` - AND takes precedence over OR. The base :meth:`self_group` method of :class:`_expression.ClauseElement` just returns self.

def tablesample(self, sampling: Union[float, Function[Any]], name: Optional[str] = None, seed: Optional[roles.ExpressionElementRole[Any]] = None) -> TableSample: (source)

Return a TABLESAMPLE alias of this :class:`_expression.FromClause`. The return value is the :class:`_expression.TableSample` construct also provided by the top-level :func:`_expression.tablesample` function. .. versionadded:: 1.1 .. seealso:: :func:`_expression.tablesample` - usage guidelines and parameters

Define the 'schema' attribute for this :class:`_expression.FromClause`. This is typically ``None`` for most objects except that of :class:`_schema.Table`, where it is taken as the value of the :paramref:`_schema.Table.schema` argument.

@util.ro_memoized_property
foreign_keys = (source)

Return the collection of :class:`_schema.ForeignKey` marker objects which this FromClause references. Each :class:`_schema.ForeignKey` is a member of a :class:`_schema.Table`-wide :class:`_schema.ForeignKeyConstraint`. .. seealso:: :attr:`_schema.Table.foreign_key_constraints`

@util.ro_memoized_property
primary_key = (source)

Return the iterable collection of :class:`_schema.Column` objects which comprise the primary key of this :class:`_selectable.FromClause`. For a :class:`_schema.Table` object, this collection is represented by the :class:`_schema.PrimaryKeyConstraint` which itself is an iterable collection of :class:`_schema.Column` objects.

A synonym for :attr:`.FromClause.columns` :return: a :class:`.ColumnCollection`

@util.ro_non_memoized_property
columns: ReadOnlyColumnCollection[str, KeyedColumnElement[Any]] = (source)

A named-based collection of :class:`_expression.ColumnElement` objects maintained by this :class:`_expression.FromClause`. The :attr:`.columns`, or :attr:`.c` collection, is the gateway to the construction of SQL expressions using table-bound or other selectable-bound columns:: select(mytable).where(mytable.c.somecolumn == 5) :return: a :class:`.ColumnCollection` object.

@util.ro_non_memoized_property
description: str = (source)

A brief description of this :class:`_expression.FromClause`. Used primarily for error message formatting.

@util.ro_non_memoized_property
entity_namespace: _EntityNamespace = (source)

Return a namespace used for name-based access in SQL expressions. This is the namespace that is used to resolve "filter_by()" type expressions, such as:: stmt.filter_by(address='some address') It defaults to the ``.c`` collection, however internally it can be overridden using the "entity_namespace" annotation to deliver alternative results.

@util.ro_non_memoized_property
exported_columns: ReadOnlyColumnCollection[str, KeyedColumnElement[Any]] = (source)

A :class:`_expression.ColumnCollection` that represents the "exported" columns of this :class:`_expression.Selectable`. The "exported" columns for a :class:`_expression.FromClause` object are synonymous with the :attr:`_expression.FromClause.columns` collection. .. versionadded:: 1.4 .. seealso:: :attr:`_expression.Selectable.exported_columns` :attr:`_expression.SelectBase.exported_columns`

def _generate_fromclause_column_proxies(self, fromclause: FromClause): (source)

Populate columns into an :class:`.AliasedReturnsRows` object.

def _is_lexical_equivalent(self, other: FromClause) -> bool: (source)

Return ``True`` if this :class:`_expression.FromClause` and the other represent the same lexical identity. This tests if either one is a copy of the other, or if they are the same via annotation identity.

def _populate_column_collection(self): (source)

Called on subclasses to establish the .c collection. Each implementation has a different way of establishing this collection.

def _refresh_for_new_column(self, column: ColumnElement[Any]): (source)

Given a column added to the .c collection of an underlying selectable, produce the local version of that column, assuming this selectable ultimately should proxy this column. this is used to "ping" a derived selectable to add a new column to its .c. collection when a Column has been added to one of the Table objects it ultimately derives from. If the given selectable hasn't populated its .c. collection yet, it should at least pass on the message to the contained selectables, but it will return None. This method is currently used by Declarative to allow Table columns to be added to a partially constructed inheritance mapping that may have already produced joins. The method isn't public right now, as the full span of implications and/or caveats aren't yet clear. It's also possible that this functionality could be invoked by default via an event, which would require that selectables maintain a weak referencing collection of all derivations.

def _reset_column_collection(self): (source)

Reset the attributes linked to the ``FromClause.c`` attribute. This collection is separate from all the other memoized things as it has shown to be sensitive to being cleared out in situations where enclosing code, typically in a replacement traversal scenario, has already established strong relationships with the exported columns. The collection is cleared for the case where a table is having a column added to it as well as within a Join during copy internals.

_is_join: bool = (source)

Undocumented

_use_schema_map: bool = (source)

Undocumented

_columns = (source)

Undocumented

@property
_cols_populated: bool = (source)

Undocumented

@util.ro_non_memoized_property
_hide_froms: Iterable[FromClause] = (source)
@util.ro_non_memoized_property
_select_iterable: _SelectIterable = (source)