diff options
| author | Federico Caselli <cfederico87@gmail.com> | 2022-12-09 19:08:19 +0100 |
|---|---|---|
| committer | Federico Caselli <cfederico87@gmail.com> | 2022-12-14 22:35:47 +0100 |
| commit | d27764d5bc63ae2ebc2e0db1d88af9a0e0f2f590 (patch) | |
| tree | 900856ae23b55044aba22ececa009ef61c8657a9 /lib/sqlalchemy/orm/query.py | |
| parent | a8d76cff39dbaf6354d42d35cd68332df469d124 (diff) | |
| download | sqlalchemy-d27764d5bc63ae2ebc2e0db1d88af9a0e0f2f590.tar.gz | |
Improve v2 documentation
Fixes: #7659
Change-Id: Ic9b758c7eed568f33dd0a745031f96de7666baf1
Diffstat (limited to 'lib/sqlalchemy/orm/query.py')
| -rw-r--r-- | lib/sqlalchemy/orm/query.py | 157 |
1 files changed, 152 insertions, 5 deletions
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index d51c8bf9a..01db08eb4 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -309,6 +309,10 @@ class Query( .. versionadded:: 2.0 + .. seealso:: + + :meth:`.Result.tuples` - v2 equivalent method. + """ return self.only_return_tuples(True) # type: ignore @@ -608,6 +612,10 @@ class Query( Eager JOIN generation within the query is disabled. + .. seealso:: + + :meth:`_sql.Select.subquery` - v2 comparable method. + :param name: string name to be assigned as the alias; this is passed through to :meth:`_expression.FromClause.alias`. If ``None``, a name will be deterministically generated @@ -694,7 +702,7 @@ class Query( .. seealso:: - :meth:`_expression.HasCTE.cte` + :meth:`_sql.Select.cte` - v2 equivalent method. """ return ( @@ -708,7 +716,9 @@ class Query( :class:`_query.Query`, converted to a scalar subquery with a label of the given name. - Analogous to :meth:`sqlalchemy.sql.expression.SelectBase.label`. + .. seealso:: + + :meth:`_sql.Select.label` - v2 comparable method. """ @@ -773,6 +783,10 @@ class Query( .. versionchanged:: 1.4 The :meth:`_query.Query.scalar_subquery` method replaces the :meth:`_query.Query.as_scalar` method. + .. seealso:: + + :meth:`_sql.Select.scalar_subquery` - v2 comparable method. + """ return ( @@ -829,6 +843,8 @@ class Query( :meth:`_query.Query.is_single_entity` + :meth:`_engine.Result.tuples` - v2 comparable method. + """ self.load_options += dict(_only_return_tuples=value) return self @@ -902,6 +918,10 @@ class Query( .. versionadded:: 1.4 + .. seealso:: + + :meth:`_sql.Select.get_label_style` - v2 equivalent method. + """ return self._label_style @@ -934,6 +954,11 @@ class Query( .. versionadded:: 1.4 + + .. seealso:: + + :meth:`_sql.Select.set_label_style` - v2 equivalent method. + """ # noqa if self._label_style is not style: self = self._generate() @@ -971,6 +996,10 @@ class Query( This returned value is a SQL expression construct, or ``None`` if no criterion has been established. + .. seealso:: + + :attr:`_sql.Select.whereclause` - v2 equivalent property. + """ return BooleanClauseList._construct_for_whereclause( self._where_criteria @@ -1165,6 +1194,10 @@ class Query( a subquery as returned by :meth:`_query.Query.subquery` is embedded in another :func:`_expression.select` construct. + .. seealso:: + + :meth:`_sql.Select.correlate` - v2 equivalent method. + """ self._auto_correlate = False @@ -1297,7 +1330,12 @@ class Query( alias: Optional[Union[Alias, Subquery]] = None, ) -> Query[Any]: """add a mapped entity to the list of result columns - to be returned.""" + to be returned. + + .. seealso:: + + :meth:`_sql.Select.add_columns` - v2 comparable method. + """ if alias is not None: # TODO: deprecate @@ -1551,6 +1589,9 @@ class Query( q = q.join((subq, subq.c.email < Address.email)).\ limit(1) + .. seealso:: + + :meth:`_sql.Select.with_only_columns` - v2 comparable method. """ if __kw: raise _no_kw() @@ -1567,7 +1608,12 @@ class Query( self, *column: _ColumnExpressionArgument[Any] ) -> Query[Any]: """Add one or more column expressions to the list - of result columns to be returned.""" + of result columns to be returned. + + .. seealso:: + + :meth:`_sql.Select.add_columns` - v2 comparable method. + """ self._raw_columns = list(self._raw_columns) @@ -1655,6 +1701,9 @@ class Query( .. seealso:: :meth:`_query.Query.execution_options` + + :meth:`_sql.Select.get_execution_options` - v2 comparable method. + """ return self._execution_options @@ -1724,6 +1773,8 @@ class Query( :meth:`_query.Query.get_execution_options` + :meth:`_sql.Select.execution_options` - v2 equivalent method. + """ self._execution_options = self._execution_options.union(kwargs) return self @@ -1824,6 +1875,10 @@ class Query( .. versionadded:: 1.4 + .. seealso:: + + :meth:`_sql.Select.where` - v2 equivalent method. + """ return self.filter(*criterion) @@ -1855,6 +1910,8 @@ class Query( :meth:`_query.Query.filter_by` - filter on keyword expressions. + :meth:`_sql.Select.where` - v2 equivalent method. + """ for crit in list(criterion): crit = coercions.expect( @@ -1940,6 +1997,8 @@ class Query( :meth:`_query.Query.filter` - filter on SQL expressions. + :meth:`_sql.Select.filter_by` - v2 comparable method. + """ from_entity = self._filter_by_zero() @@ -1982,6 +2041,8 @@ class Query( :ref:`tutorial_order_by_label` - in the :ref:`unified_tutorial` + :meth:`_sql.Select.order_by` - v2 equivalent method. + """ for assertion in (self._no_statement_condition, self._no_limit_offset): @@ -2024,6 +2085,8 @@ class Query( :ref:`tutorial_order_by_label` - in the :ref:`unified_tutorial` + :meth:`_sql.Select.group_by` - v2 equivalent method. + """ for assertion in (self._no_statement_condition, self._no_limit_offset): @@ -2058,6 +2121,10 @@ class Query( group_by(User.id).\ having(func.count(Address.id) > 2) + .. seealso:: + + :meth:`_sql.Select.having` - v2 equivalent method. + """ for criterion in having: @@ -2107,6 +2174,10 @@ class Query( :class:`_query.Query` object will not render ORDER BY within its SELECT statement. + .. seealso:: + + :meth:`_sql.Select.union` - v2 equivalent method. + """ return self._set_op(expression.union, *q) @@ -2116,6 +2187,10 @@ class Query( Works the same way as :meth:`~sqlalchemy.orm.query.Query.union`. See that method for usage examples. + .. seealso:: + + :meth:`_sql.Select.union_all` - v2 equivalent method. + """ return self._set_op(expression.union_all, *q) @@ -2125,6 +2200,10 @@ class Query( Works the same way as :meth:`~sqlalchemy.orm.query.Query.union`. See that method for usage examples. + .. seealso:: + + :meth:`_sql.Select.intersect` - v2 equivalent method. + """ return self._set_op(expression.intersect, *q) @@ -2134,6 +2213,10 @@ class Query( Works the same way as :meth:`~sqlalchemy.orm.query.Query.union`. See that method for usage examples. + .. seealso:: + + :meth:`_sql.Select.intersect_all` - v2 equivalent method. + """ return self._set_op(expression.intersect_all, *q) @@ -2143,6 +2226,10 @@ class Query( Works the same way as :meth:`~sqlalchemy.orm.query.Query.union`. See that method for usage examples. + .. seealso:: + + :meth:`_sql.Select.except_` - v2 equivalent method. + """ return self._set_op(expression.except_, *q) @@ -2152,6 +2239,10 @@ class Query( Works the same way as :meth:`~sqlalchemy.orm.query.Query.union`. See that method for usage examples. + .. seealso:: + + :meth:`_sql.Select.except_all` - v2 equivalent method. + """ return self._set_op(expression.except_all, *q) @@ -2334,6 +2425,10 @@ class Query( JOIN address ON user.id=address.user_id WHERE user.name = :name_1 + .. seealso:: + + :meth:`_sql.Select.join` - v2 equivalent method. + :param \*props: Incoming arguments for :meth:`_query.Query.join`, the props collection in modern use should be considered to be a one or two argument form, either as a single "target" entity or ORM @@ -2390,6 +2485,10 @@ class Query( Usage is the same as the ``join()`` method. + .. seealso:: + + :meth:`_sql.Select.outerjoin` - v2 equivalent method. + """ return self.join(target, onclause=onclause, isouter=True, full=full) @@ -2456,6 +2555,8 @@ class Query( :meth:`.Query.select_entity_from` + :meth:`_sql.Select.select_from` - v2 equivalent method. + """ self._set_select_from(from_obj, False) @@ -2502,6 +2603,8 @@ class Query( :meth:`_query.Query.offset` + :meth:`_sql.Select.slice` - v2 equivalent method. + """ self._limit_clause, self._offset_clause = sql_util._make_slice( @@ -2517,6 +2620,10 @@ class Query( """Apply a ``LIMIT`` to the query and return the newly resulting ``Query``. + .. seealso:: + + :meth:`_sql.Select.limit` - v2 equivalent method. + """ self._limit_clause = sql_util._offset_or_limit_clause(limit) return self @@ -2529,6 +2636,9 @@ class Query( """Apply an ``OFFSET`` to the query and return the newly resulting ``Query``. + .. seealso:: + + :meth:`_sql.Select.offset` - v2 equivalent method. """ self._offset_clause = sql_util._offset_or_limit_clause(offset) return self @@ -2558,6 +2668,10 @@ class Query( in SQLAlchemy 2.0. See :ref:`migration_20_query_distinct` for a description of this use case in 2.0. + .. seealso:: + + :meth:`_sql.Select.distinct` - v2 equivalent method. + :param \*expr: optional column expressions. When present, the PostgreSQL dialect will render a ``DISTINCT ON (<expressions>)`` construct. @@ -2590,6 +2704,12 @@ class Query( .. seealso:: :ref:`faq_query_deduplicating` + + .. seealso:: + + :meth:`_engine.Result.all` - v2 comparable method. + + :meth:`_engine.Result.scalars` - v2 comparable method. """ return self._iter().all() # type: ignore @@ -2609,6 +2729,10 @@ class Query( appropriate to the entity class represented by this :class:`_query.Query`. + .. seealso:: + + :meth:`_sql.Select.from_statement` - v2 comparable method. + """ statement = coercions.expect( roles.SelectStatementRole, statement, apply_propagate_attrs=self @@ -2635,6 +2759,10 @@ class Query( :meth:`_query.Query.one_or_none` + :meth:`_engine.Result.first` - v2 comparable method. + + :meth:`_engine.Result.scalars` - v2 comparable method. + """ # replicates limit(1) behavior if self._statement is not None: @@ -2665,6 +2793,10 @@ class Query( :meth:`_query.Query.one` + :meth:`_engine.Result.one_or_none` - v2 comparable method. + + :meth:`_engine.Result.scalar_one_or_none` - v2 comparable method. + """ return self._iter().one_or_none() # type: ignore @@ -2685,6 +2817,10 @@ class Query( :meth:`_query.Query.one_or_none` + :meth:`_engine.Result.one` - v2 comparable method. + + :meth:`_engine.Result.scalar_one` - v2 comparable method. + """ return self._iter().one() # type: ignore @@ -2706,6 +2842,10 @@ class Query( This results in an execution of the underlying query. + .. seealso:: + + :meth:`_engine.Result.scalar` - v2 comparable method. + """ # TODO: not sure why we can't use result.scalar() here try: @@ -2931,6 +3071,10 @@ class Query( session.query(literal(True)).filter(q.exists()).scalar() + .. seealso:: + + :meth:`_sql.Select.exists` - v2 comparable method. + """ # .add_columns() for the case that we are a query().select_from(X), @@ -3005,6 +3149,10 @@ class Query( # count distinct "name" values session.query(func.count(distinct(User.name))) + .. seealso:: + + :ref:`migration_20_query_usage` + """ col = sql.func.count(sql.literal_column("*")) return ( # type: ignore @@ -3126,7 +3274,6 @@ class Query( :ref:`orm_expression_update_delete` - """ update_args = update_args or {} |
