class GenerativeSelect(DeprecatedSelectBaseGenerations, SelectBase):
Known subclasses: sqlalchemy.sql.expression.CompoundSelect
, sqlalchemy.sql.expression.Select
Base class for SELECT statements where additional elements can be added.
This serves as the base for _expression.Select
and
_expression.CompoundSelect
where elements such as ORDER BY, GROUP BY can be added and column
rendering can be controlled. Compare to
_expression.TextualSelect
, which,
while it subclasses _expression.SelectBase
and is also a SELECT construct,
represents a fixed textual string which cannot be altered at this level,
only wrapped as a subquery.
Method | __init__ |
Undocumented |
Method | _offset_or_limit_clause |
Convert the given value to an "offset or limit" clause. |
Method | _offset_or_limit_clause_asint |
Convert the "offset or limit" clause of a select construct to an integer. |
Method | _simple_int_clause |
True if the clause is a simple integer, False if it is not present or is a SQL expression. |
Method | apply_labels |
Undocumented |
Method | fetch |
Return a new selectable with the given FETCH FIRST criterion applied. |
Method | get_label_style |
Retrieve the current label style. |
Method | group_by |
Return a new selectable with the given list of GROUP BY criterion applied. |
Method | limit |
Return a new selectable with the given LIMIT criterion applied. |
Method | offset |
Return a new selectable with the given OFFSET criterion applied. |
Method | order_by |
Return a new selectable with the given list of ORDER BY criteria applied. |
Method | set_label_style |
Return a new selectable with the specified label style. |
Method | slice |
Apply LIMIT / OFFSET to this statement based on a slice. |
Method | with_for_update |
Specify a FOR UPDATE clause for this _expression.GenerativeSelect . |
Instance Variable | _bind |
Undocumented |
Instance Variable | _fetch_clause |
Undocumented |
Instance Variable | _fetch_clause_options |
Undocumented |
Instance Variable | _for_update_arg |
Undocumented |
Instance Variable | _group_by_clauses |
Undocumented |
Instance Variable | _label_style |
Undocumented |
Instance Variable | _limit_clause |
Undocumented |
Instance Variable | _offset_clause |
Undocumented |
Instance Variable | _order_by_clauses |
Undocumented |
Property | _group_by_clause |
ClauseList access to group_by_clauses for legacy dialects |
Property | _has_row_limiting_clause |
Undocumented |
Property | _limit |
No summary |
Property | _offset |
No summary |
Property | _order_by_clause |
ClauseList access to order_by_clauses for legacy dialects |
Inherited from DeprecatedSelectBaseGenerations
:
Method | append_group_by |
Append the given GROUP BY criterion applied to this selectable. |
Method | append_order_by |
Append the given ORDER BY criterion applied to this selectable. |
Inherited from SelectBase
:
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
(via SelectBase
):
Class Variable | _role_name |
Undocumented |
Inherited from StatementRole
(via SelectBase
, SelectStatementRole
):
Class Variable | _propagate_attrs |
Undocumented |
Inherited from SQLRole
(via SelectBase
, SelectStatementRole
, StatementRole
):
Class Variable | allows_lambda |
Undocumented |
Class Variable | uses_inspection |
Undocumented |
Inherited from SQLRole
(via SelectBase
, SelectStatementRole
, ReturnsRowsRole
):
Class Variable | allows_lambda |
Undocumented |
Class Variable | uses_inspection |
Undocumented |
Inherited from DMLSelectRole
(via SelectBase
):
Class Variable | _role_name |
Undocumented |
Inherited from SQLRole
(via SelectBase
, DMLSelectRole
):
Class Variable | allows_lambda |
Undocumented |
Class Variable | uses_inspection |
Undocumented |
Inherited from CompoundElementRole
(via SelectBase
):
Class Variable | _role_name |
Undocumented |
Inherited from AllowsLambdaRole
(via SelectBase
, CompoundElementRole
):
Class Variable | allows_lambda |
Undocumented |
Inherited from SQLRole
(via SelectBase
, CompoundElementRole
):
Class Variable | allows_lambda |
Undocumented |
Class Variable | uses_inspection |
Undocumented |
Inherited from InElementRole
(via SelectBase
):
Class Variable | _role_name |
Undocumented |
Inherited from SQLRole
(via SelectBase
, InElementRole
):
Class Variable | allows_lambda |
Undocumented |
Class Variable | uses_inspection |
Undocumented |
Inherited from HasCTE
(via SelectBase
):
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 SelectBase
, HasCTE
, HasCTERole
):
Class Variable | _role_name |
Undocumented |
Inherited from SQLRole
(via SelectBase
, HasCTE
, HasCTERole
, ReturnsRowsRole
):
Class Variable | allows_lambda |
Undocumented |
Class Variable | uses_inspection |
Undocumented |
Inherited from Executable
(via SelectBase
):
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 | _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 SelectBase
, Executable
):
Class Variable | _propagate_attrs |
Undocumented |
Class Variable | _role_name |
Undocumented |
Inherited from SQLRole
(via SelectBase
, Executable
, StatementRole
):
Class Variable | allows_lambda |
Undocumented |
Class Variable | uses_inspection |
Undocumented |
Inherited from Generative
(via SelectBase
, Executable
):
Method | _generate |
Undocumented |
Inherited from SupportsCloneAnnotations
(via SelectBase
):
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 SelectBase
, SupportsCloneAnnotations
):
Property | _annotations_cache_key |
Undocumented |
Inherited from Selectable
(via SelectBase
):
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 SelectBase
, 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 SelectBase
, Selectable
, ReturnsRows
):
Class Variable | _role_name |
Undocumented |
Inherited from SQLRole
(via SelectBase
, Selectable
, ReturnsRows
, ReturnsRowsRole
):
Class Variable | allows_lambda |
Undocumented |
Class Variable | uses_inspection |
Undocumented |
Inherited from ClauseElement
(via SelectBase
, 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 SelectBase
, Selectable
, ReturnsRows
, ClauseElement
):
Class Variable | allows_lambda |
Undocumented |
Class Variable | uses_inspection |
Undocumented |
Inherited from SupportsWrappingAnnotations
(via SelectBase
, 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 SelectBase
, Selectable
, ReturnsRows
, ClauseElement
, SupportsWrappingAnnotations
):
Property | _annotations_cache_key |
Undocumented |
Inherited from MemoizedHasCacheKey
(via SelectBase
, Selectable
, ReturnsRows
, ClauseElement
):
Method | _generate_cache_key |
return a cache key. |
Inherited from HasCacheKey
(via SelectBase
, 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 SelectBase
, Selectable
, ReturnsRows
, ClauseElement
):
Method | _copy_internals |
Reassign internal elements to be clones of themselves. |
Inherited from Traversible
(via SelectBase
, Selectable
, ReturnsRows
, ClauseElement
):
Method | get_children |
Return immediate child .visitors.Traversible elements of this .visitors.Traversible . |
Method | __class_getitem__ |
Undocumented |
Undocumented
Convert the given value to an "offset or limit" clause.
This handles incoming integers and converts to an expression; if an expression is already given, it is passed through.
Convert the "offset or limit" clause of a select construct to an integer.
This is only possible if the value is stored as a simple bound parameter. Otherwise, a compilation error is raised.
Undocumented
Return a new selectable with the given FETCH FIRST criterion applied.
This is a numeric value which usually renders as FETCH {FIRST | NEXT} [ count ] {ROW | ROWS} {ONLY | WITH TIES} expression in the resulting select. This functionality is is currently implemented for Oracle, PostgreSQL, MSSQL.
Use _sql.GenerativeSelect.offset
to specify the offset.
Note
The _sql.GenerativeSelect.fetch
method will replace
any clause applied with _sql.GenerativeSelect.limit
.
See Also
_sql.GenerativeSelect.limit
_sql.GenerativeSelect.offset
Parameters | |
count | an integer COUNT parameter, or a SQL expression that provides an integer result. When percent=True this will represent the percentage of rows to return, not the absolute value. Pass None to reset it. |
with_ties | When True, the WITH TIES option is used to return any additional rows that tie for the last place in the result set according to the ORDER BY clause. The ORDER BY may be mandatory in this case. Defaults to False |
percent | When True, count represents the percentage of the total number of selected rows to return. Defaults to False |
Return a new selectable with the given list of GROUP BY criterion applied.
All existing GROUP BY settings can be suppressed by passing None.
e.g.:
stmt = select(table.c.name, func.max(table.c.stat)).\ group_by(table.c.name)
See Also
:ref:`tutorial_group_by_w_aggregates` - in the :ref:`unified_tutorial`
:ref:`tutorial_order_by_label` - in the :ref:`unified_tutorial`
Parameters | |
*clauses | a series of _expression.ColumnElement
constructs
which will be used to generate an GROUP BY clause. |
Return a new selectable with the given LIMIT criterion applied.
This is a numerical value which usually renders as a LIMIT expression in the resulting select. Backends that don't support LIMIT will attempt to provide similar functionality.
Note
The _sql.GenerativeSelect.limit
method will replace
any clause applied with _sql.GenerativeSelect.fetch
.
_expression.Select.limit
can now
accept arbitrary SQL expressions as well as integer values.See Also
_sql.GenerativeSelect.fetch
_sql.GenerativeSelect.offset
Parameters | |
limit | an integer LIMIT parameter, or a SQL expression that provides an integer result. Pass None to reset it. |
Return a new selectable with the given OFFSET criterion applied.
This is a numeric value which usually renders as an OFFSET expression in the resulting select. Backends that don't support OFFSET will attempt to provide similar functionality.
_expression.Select.offset
can now
accept arbitrary SQL expressions as well as integer values.See Also
_sql.GenerativeSelect.limit
_sql.GenerativeSelect.fetch
Parameters | |
offset | an integer OFFSET parameter, or a SQL expression that provides an integer result. Pass None to reset it. |
Return a new selectable with the given list of ORDER BY criteria applied.
e.g.:
stmt = select(table).order_by(table.c.id, table.c.name)
All existing ORDER BY criteria may be cancelled by passing
None by itself. New ORDER BY criteria may then be added by
invoking _sql.Select.order_by
again, e.g.:
# will erase all ORDER BY and ORDER BY new_col alone stmt = stmt.order_by(None).order_by(new_col)
See Also
:ref:`tutorial_order_by` - in the :ref:`unified_tutorial`
:ref:`tutorial_order_by_label` - in the :ref:`unified_tutorial`
Parameters | |
*clauses | a series of _expression.ColumnElement
constructs
which will be used to generate an ORDER BY clause. |
Return a new selectable with the specified label style.
There are three "label styles" available,
_sql.LABEL_STYLE_DISAMBIGUATE_ONLY
,
_sql.LABEL_STYLE_TABLENAME_PLUS_COL
, and
_sql.LABEL_STYLE_NONE
. The default style is
_sql.LABEL_STYLE_TABLENAME_PLUS_COL
.
In modern SQLAlchemy, there is not generally a need to change the
labeling style, as per-expression labels are more effectively used by
making use of the _sql.ColumnElement.label
method. In past
versions, _sql.LABEL_STYLE_TABLENAME_PLUS_COL
was used to
disambiguate same-named columns from different tables, aliases, or
subqueries; the newer _sql.LABEL_STYLE_DISAMBIGUATE_ONLY
now
applies labels only to names that conflict with an existing name so
that the impact of this labeling is minimal.
The rationale for disambiguation is mostly so that all column
expressions are available from a given _sql.FromClause.c
collection when a subquery is created.
_sql.GenerativeSelect.set_label_style
method replaces the
previous combination of .apply_labels(), .with_labels() and
use_labels=True methods and/or parameters.See Also
_sql.LABEL_STYLE_DISAMBIGUATE_ONLY
_sql.LABEL_STYLE_TABLENAME_PLUS_COL
_sql.LABEL_STYLE_NONE
_sql.LABEL_STYLE_DEFAULT
Apply LIMIT / OFFSET to this statement based on a slice.
The start and stop indices behave like the argument to Python's
built-in range
function. This method provides an
alternative to using LIMIT/OFFSET to get a slice of the
query.
For example,
stmt = select(User).order_by(User).id.slice(1, 3)
renders as
SELECT users.id AS users_id, users.name AS users_name FROM users ORDER BY users.id LIMIT ? OFFSET ? (2, 1)
Note
The _sql.GenerativeSelect.slice
method will replace
any clause applied with _sql.GenerativeSelect.fetch
.
_sql.GenerativeSelect.slice
method generalized from the ORM.See Also
_sql.GenerativeSelect.limit
_sql.GenerativeSelect.offset
_sql.GenerativeSelect.fetch
Specify a FOR UPDATE clause for this
_expression.GenerativeSelect
.
E.g.:
stmt = select(table).with_for_update(nowait=True)
On a database like PostgreSQL or Oracle, the above would render a statement like:
SELECT table.a, table.b FROM table FOR UPDATE NOWAIT
on other backends, the nowait option is ignored and instead would produce:
SELECT table.a, table.b FROM table FOR UPDATE
When called with no arguments, the statement will render with the suffix FOR UPDATE. Additional arguments can then be provided which allow for common database-specific variants.
Parameters | |
nowait | boolean; will render FOR UPDATE NOWAIT on Oracle and PostgreSQL dialects. |
read | boolean; will render LOCK IN SHARE MODE on MySQL, FOR SHARE on PostgreSQL. On PostgreSQL, when combined with nowait, will render FOR SHARE NOWAIT. |
of | SQL expression or list of SQL expression elements
(typically _schema.Column
objects or a compatible expression) which
will render into a FOR UPDATE OF clause; supported by PostgreSQL
and Oracle. May render as a table or as a column depending on
backend. |
skip_locked | boolean, will render FOR UPDATE SKIP LOCKED on Oracle and PostgreSQL dialects or FOR SHARE SKIP LOCKED if read=True is also specified. |
key_share | boolean, will render FOR NO KEY UPDATE, or if combined with read=True will render FOR KEY SHARE, on the PostgreSQL dialect. |