class documentation

class FromClause(roles.AnonymizedFromClauseRole, Selectable):

Known subclasses: sqlalchemy.sql.expression.AliasedReturnsRows, sqlalchemy.sql.expression.Join, sqlalchemy.sql.expression.TableClause, sqlalchemy.sql.expression.Values, sqlalchemy.sql.functions.FunctionElement, sqlalchemy.sql.selectable.FromGrouping

View In Hierarchy

Represent an element that can be used within the FROM clause of a SELECT statement.

The most common forms of _expression.FromClause are the _schema.Table and the _expression.select constructs. Key features common to all _expression.FromClause objects include:

  • a .c collection, which provides per-name access to a collection of _expression.ColumnElement objects.
  • a .primary_key attribute, which is a collection of all those _expression.ColumnElement objects that indicate the primary_key flag.
  • Methods to generate various derivations of a "from" clause, including _expression.FromClause.alias, _expression.FromClause.join, _expression.FromClause.select.
Method alias Return an alias of this _expression.FromClause.
Method is​_derived​_from Return True if this _expression.FromClause is 'derived' from the given FromClause.
Method join Return a _expression.Join from this _expression.FromClause to another FromClause.
Method outerjoin No summary
Method select Return a SELECT of this _expression.FromClause.
Method table​_valued Return a _sql.TableValuedColumn object for this _expression.FromClause.
Method tablesample Return a TABLESAMPLE alias of this _expression.FromClause.
Class Variable c Undocumented
Class Variable schema Define the 'schema' attribute for this _expression.FromClause.
Instance Variable foreign​_keys Return the collection of _schema.ForeignKey marker objects which this FromClause references.
Instance Variable primary​_key Return the iterable collection of _schema.Column objects which comprise the primary key of this _selectable.FromClause.
Method ​_anonymous​_fromclause Undocumented
Method ​_generate​_fromclause​_column​_proxies Undocumented
Method ​_init​_collections Undocumented
Method ​_is​_lexical​_equivalent Return True if this _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 __visit​_name__ Undocumented
Class Variable ​_hide​_froms Undocumented
Class Variable ​_is​_from​_clause Undocumented
Class Variable ​_is​_join Undocumented
Class Variable ​_select​_iterable Undocumented
Class Variable ​_use​_schema​_map Undocumented
Class Variable is​_selectable Undocumented
Class Variable named​_with​_column Undocumented
Instance Variable ​_columns Undocumented
Property ​_cols​_populated Undocumented
Property columns A named-based collection of _expression.ColumnElement objects maintained by this _expression.FromClause.
Property description A brief description of this _expression.FromClause.
Property entity​_namespace Return a namespace used for name-based access in SQL expressions.
Property exported​_columns A _expression.ColumnCollection that represents the "exported" columns of this _expression.Selectable.

Inherited from FromClauseRole (via AnonymizedFromClauseRole, StrictFromClauseRole):

Class Variable ​_is​_subquery Undocumented
Class Variable ​_role​_name Undocumented

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

Class Variable allows​_lambda Undocumented

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

Class Variable ​_post​_inspect Undocumented
Class Variable uses​_inspection Undocumented

Inherited from SQLRole (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, ColumnsClauseRole, ColumnListRole):

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

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

Class Variable allows​_lambda Undocumented

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

Class Variable ​_post​_inspect Undocumented
Class Variable uses​_inspection Undocumented

Inherited from SQLRole (via AnonymizedFromClauseRole, StrictFromClauseRole, FromClauseRole, JoinTargetRole, StructuralRole):

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

Inherited from Selectable:

Method corresponding​_column No summary
Method lateral Return a LATERAL alias of this _expression.Selectable.
Method replace​_selectable Replace all occurrences of _expression.FromClause 'old' with the given _expression.Alias object, returning a copy of this _expression.FromClause.

Inherited from ReturnsRows (via Selectable):

Class Variable ​_is​_lateral Undocumented
Class Variable ​_is​_returns​_rows Undocumented
Class Variable ​_is​_select​_statement Undocumented
Property ​_all​_selected​_columns A sequence of column expression objects that represents the "selected" columns of this _expression.ReturnsRows.
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 ​_from​_objects 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 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.

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 alias(self, name=None, flat=False):

Return an alias of this _expression.FromClause.

E.g.:

a2 = some_table.alias('a2')

The above code creates an _expression.Alias object which can be used as a FROM clause in any SELECT statement.

See Also

:ref:`core_tutorial_aliases`

_expression.alias

def is_derived_from(self, fromclause):

Return True if this _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, onclause=None, isouter=False, full=False):

Return a _expression.Join from this _expression.FromClause to another 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

See Also

_expression.join - standalone function

_expression.Join - the type of object produced

Parameters
rightthe right side of the join; this is any _expression.FromClause object such as a _schema.Table object, and may also be a selectable-compatible object such as an ORM-mapped class.
onclausea SQL expression representing the ON clause of the join. If left at None, _expression.FromClause.join will attempt to join the two tables based on a foreign key relationship.
isouterif True, render a LEFT OUTER JOIN, instead of JOIN.
full

if True, render a FULL OUTER JOIN, instead of LEFT OUTER JOIN. Implies :paramref:`.FromClause.join.isouter`.

New in version 1.1.
def outerjoin(self, right, onclause=None, full=False):

Return a _expression.Join from this _expression.FromClause to another 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)

See Also

_expression.FromClause.join

_expression.Join

Parameters
rightthe right side of the join; this is any _expression.FromClause object such as a _schema.Table object, and may also be a selectable-compatible object such as an ORM-mapped class.
onclausea SQL expression representing the ON clause of the join. If left at None, _expression.FromClause.join will attempt to join the two tables based on a foreign key relationship.
full

if True, render a FULL OUTER JOIN, instead of LEFT OUTER JOIN.

New in version 1.1.
@util.deprecated_params(whereclause=('2.0', 'The :paramref:`_sql.FromClause.select().whereclause` parameter is deprecated and will be removed in version 2.0. Please make use of the :meth:`.Select.where` method to add WHERE criteria to the SELECT statement.'), kwargs=('2.0', 'The :meth:`_sql.FromClause.select` method will no longer accept keyword arguments in version 2.0. Please use generative methods from the :class:`_sql.Select` construct in order to apply additional modifications.'))
def select(self, whereclause=None, **kwargs):

Return a SELECT of this _expression.FromClause.

e.g.:

stmt = some_table.select().where(some_table.c.id == 5)

See Also

_expression.select - general purpose method which allows for arbitrary column lists.

Parameters
whereclausea WHERE clause, equivalent to calling the _sql.Select.where method.
**kwargsadditional keyword arguments are passed to the legacy constructor for _sql.Select described at _sql.Select.create_legacy_select.
@util.preload_module('sqlalchemy.sql.sqltypes')
def table_valued(self):

Return a _sql.TableValuedColumn object for this _expression.FromClause.

A _sql.TableValuedColumn is a _sql.ColumnElement that represents a complete row in a table. Support for this construct is backend dependent, and is supported in various forms by backends such as PostgreSQL, Oracle and SQL Server.

E.g.:

>>> from sqlalchemy import select, column, func, table
>>> a = table("a", column("id"), column("x"), column("y"))
>>> stmt = select(func.row_to_json(a.table_valued()))
>>> print(stmt)
SELECT row_to_json(a) AS row_to_json_1
FROM a
New in version 1.4.0b2.
def tablesample(self, sampling, name=None, seed=None):

Return a TABLESAMPLE alias of this _expression.FromClause.

The return value is the _expression.TableSample construct also provided by the top-level _expression.tablesample function.

New in version 1.1.

See Also

_expression.tablesample - usage guidelines and parameters

c =

Undocumented

schema =

Define the 'schema' attribute for this _expression.FromClause.

This is typically None for most objects except that of _schema.Table, where it is taken as the value of the :paramref:`_schema.Table.schema` argument.

@util.memoized_property
foreign_keys: set =

Return the collection of _schema.ForeignKey marker objects which this FromClause references.

Each _schema.ForeignKey is a member of a _schema.Table-wide _schema.ForeignKeyConstraint.

See Also

_schema.Table.foreign_key_constraints

@util.memoized_property
primary_key =

Return the iterable collection of _schema.Column objects which comprise the primary key of this _selectable.FromClause.

For a _schema.Table object, this collection is represented by the _schema.PrimaryKeyConstraint which itself is an iterable collection of _schema.Column objects.

def _anonymous_fromclause(self, name=None, flat=False):
def _generate_fromclause_column_proxies(self, fromclause):

Undocumented

def _init_collections(self):
def _is_lexical_equivalent(self, other):

Return True if this _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):

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):

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):

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_from_clause: bool =
_is_join: bool =

Undocumented

_select_iterable =
_use_schema_map: bool =

Undocumented

is_selectable: bool =
_columns =

Undocumented

@property
_cols_populated =

Undocumented

@util.memoized_property
columns =

A named-based collection of _expression.ColumnElement objects maintained by this _expression.FromClause.

The .columns, or .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)
@property
description =

A brief description of this _expression.FromClause.

Used primarily for error message formatting.

@property
entity_namespace =

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.

@property
exported_columns =

A _expression.ColumnCollection that represents the "exported" columns of this _expression.Selectable.

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

New in version 1.4.

See Also

_expression.Selectable.exported_columns

_expression.SelectBase.exported_columns