def test_eager_order_by(self): class Address(Base, ComparableEntity): __tablename__ = 'addresses' id = Column('id', Integer, primary_key=True) email = Column('email', String(50)) user_id = Column('user_id', Integer, ForeignKey('users.id')) class User(Base, ComparableEntity): __tablename__ = 'users' id = Column('id', Integer, primary_key=True) name = Column('name', String(50)) addresses = relation("Address", order_by=Address.email) Base.metadata.create_all() u1 = User(name='u1', addresses=[ Address(email='two'), Address(email='one'), ]) sess = create_session() sess.add(u1) sess.flush() sess.clear() eq_(sess.query(User).options(eagerload(User.addresses)).all(), [User(name='u1', addresses=[ Address(email='one'), Address(email='two'), ])])
def test_query(self): q = Session.query(User).filter(User.name == 'ed').options( eagerload(User.addresses)) eq_(q.all(), [ User(name='ed', addresses=[Address(id=2), Address(id=3), Address(id=4)]) ]) q2 = serializer.loads(serializer.dumps(q), users.metadata, Session) def go(): eq_(q2.all(), [ User(name='ed', addresses=[Address(id=2), Address(id=3), Address(id=4)]) ]) self.assert_sql_count(testing.db, go, 1) eq_( q2.join(User.addresses).filter( Address.email == '*****@*****.**').value(func.count('*')), 1) u1 = Session.query(User).get(8) q = Session.query(Address).filter(Address.user == u1).order_by( desc(Address.email)) q2 = serializer.loads(serializer.dumps(q), users.metadata, Session) eq_(q2.all(), [ Address(email='*****@*****.**'), Address(email='*****@*****.**'), Address(email='*****@*****.**') ]) q = Session.query(User).join(User.addresses).filter( Address.email.like('%fred%')) q2 = serializer.loads(serializer.dumps(q), users.metadata, Session) eq_(q2.all(), [User(name='fred')]) eq_(list(q2.values(User.id, User.name)), [(9, u'fred')])
def test_query(self): q = Session.query(User).filter(User.name=='ed').options(eagerload(User.addresses)) eq_(q.all(), [User(name='ed', addresses=[Address(id=2), Address(id=3), Address(id=4)])]) q2 = serializer.loads(serializer.dumps(q), users.metadata, Session) def go(): eq_(q2.all(), [User(name='ed', addresses=[Address(id=2), Address(id=3), Address(id=4)])]) self.assert_sql_count(testing.db, go, 1) eq_(q2.join(User.addresses).filter(Address.email=='*****@*****.**').value(func.count('*')), 1) u1 = Session.query(User).get(8) q = Session.query(Address).filter(Address.user==u1).order_by(desc(Address.email)) q2 = serializer.loads(serializer.dumps(q), users.metadata, Session) eq_(q2.all(), [Address(email='*****@*****.**'), Address(email='*****@*****.**'), Address(email='*****@*****.**')]) q = Session.query(User).join(User.addresses).filter(Address.email.like('%fred%')) q2 = serializer.loads(serializer.dumps(q), users.metadata, Session) eq_(q2.all(), [User(name='fred')]) eq_(list(q2.values(User.id, User.name)), [(9, u'fred')])