from sqlalchemy.orm import mapper, object_mapper
from sqlalchemy.orm import util as mapperutil
from itertools import chain
+import warnings
__all__ = ['Query', 'QueryContext']
def _no_criterion(self):
q = self._clone()
+
+ if q._criterion or q._statement or q._from_obj != [self.table]:
+ warnings.warn(RuntimeWarning("Query.get() being called on a Query with existing criterion; criterion is being ignored."))
+
q._from_obj = [self.table]
q._alias_ids = {}
q._joinpoint = self.mapper
def test_no_criterion(self):
"""test that get()/load() does not use preexisting filter/etc. criterion"""
-
+
s = create_session()
+
+ import warnings
+ warnings.filterwarnings("error", r".*Query.*")
+ print "---------------------------------------"
+ try:
+ s.query(User).join('addresses').filter(Address.user_id==8).get(7)
+ assert False
+ except RuntimeWarning, e:
+ assert str(e) == "Query.get() being called on a Query with existing criterion; criterion is being ignored."
+
+ warnings.filterwarnings("once", r".*Query.*")
assert s.query(User).filter(User.id==7).get(19) is None
assert s.query(User).join('addresses').filter(Address.user_id==8).get(7).id == u.id
assert s.query(User).join('addresses').filter(Address.user_id==8).load(7).id == u.id
+
+
def test_unique_param_names(self):
class SomeUser(object):