Beispiel #1
0
    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'),
        ])])
Beispiel #2
0
    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')])
Beispiel #3
0
    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')])