the criterion is any sql.ClauseElement applicable to the WHERE clause of a select.
"""
+
+ if not isinstance(criterion, sql.ClauseElement):
+ raise exceptions.ArgumentError("filter() argument must be of type sqlalchemy.sql.ClauseElement")
+
q = self._clone()
if q._criterion is not None:
q._criterion = q._criterion & criterion
import properties
if len(args) > 1:
- raise exceptions.InvalidRequestError("filter_by() takes either zero positional arguments, or one scalar or list argument indicating a property search path.")
+ raise exceptions.ArgumentError("filter_by() takes either zero positional arguments, or one scalar or list argument indicating a property search path.")
if len(args) == 1:
path = args[0]
(join, joinpoint, alias) = self._join_to(path, outerjoin=False, start=self.mapper, create_aliases=True)
def test_onefilter(self):
assert [User(id=8), User(id=9)] == create_session().query(User).filter(users.c.name.endswith('ed')).all()
+ def test_typecheck(self):
+ try:
+ create_session().query(User).filter(User.name==5)
+ assert False
+ except exceptions.ArgumentError, e:
+ assert str(e) == "filter() argument must be of type sqlalchemy.sql.ClauseElement"
+
class ParentTest(QueryTest):
def test_o2m(self):
sess = create_session()