summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/sql')
-rw-r--r--lib/sqlalchemy/sql/dml.py23
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/dml.py b/lib/sqlalchemy/sql/dml.py
index a9bccaeff..b7151ac7b 100644
--- a/lib/sqlalchemy/sql/dml.py
+++ b/lib/sqlalchemy/sql/dml.py
@@ -12,6 +12,7 @@ Provide :class:`_expression.Insert`, :class:`_expression.Update` and
from sqlalchemy.types import NullType
from . import coercions
from . import roles
+from .base import _entity_namespace_key
from .base import _from_objects
from .base import _generative
from .base import ColumnCollection
@@ -983,10 +984,30 @@ class DMLWhereBase(object):
)
def filter(self, *criteria):
- """A synonym for the :meth:`_dml.DMLWhereBase.where` method."""
+ """A synonym for the :meth:`_dml.DMLWhereBase.where` method.
+
+ .. versionadded:: 1.4
+
+ """
return self.where(*criteria)
+ def _filter_by_zero(self):
+ return self.table
+
+ def filter_by(self, **kwargs):
+ r"""apply the given filtering criterion as a WHERE clause
+ to this select.
+
+ """
+ from_entity = self._filter_by_zero()
+
+ clauses = [
+ _entity_namespace_key(from_entity, key) == value
+ for key, value in kwargs.items()
+ ]
+ return self.filter(*clauses)
+
@property
def whereclause(self):
"""Return the completed WHERE clause for this :class:`.DMLWhereBase`