From 36949938e83f1e3096d24b74d33f19512d014520 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 10 Apr 2019 11:51:27 -0400 Subject: Don't use and_() inside of Query.filter_by Adjusted the :meth:`.Query.filter_by` method to not call :func:`.and()` internally against multiple criteria, instead passing it off to :meth:`.Query.filter` as a series of criteria, instead of a single criteria. This allows :meth:`.Query.filter_by` to defer to :meth:`.Query.filter`'s treatment of variable numbers of clauses, including the case where the list is empty. In this case, the :class:`.Query` object will not have a ``.whereclause``, which allows subsequent "no whereclause" methods like :meth:`.Query.select_from` to behave consistently. Fixes: #4606 Change-Id: Ifc8cdbf13accca2236068ef70114a7c35ab159ff --- lib/sqlalchemy/orm/query.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib/sqlalchemy') diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 9544b7d11..5d340654c 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -1791,7 +1791,7 @@ class Query(object): _entity_descriptor(self._joinpoint_zero(), key) == value for key, value in kwargs.items() ] - return self.filter(sql.and_(*clauses)) + return self.filter(*clauses) @_generative(_no_statement_condition, _no_limit_offset) def order_by(self, *criterion): -- cgit v1.2.1