コード例 #1
0
ファイル: selectresults.py プロジェクト: zeus911/vpnease-l2tp
 def test_jointo(self):
     """test the join_to and outerjoin_to functions on SelectResults"""
     mapper(tables.User, tables.users, properties={
         'orders':relation(mapper(tables.Order, tables.orders, properties={
             'items':relation(mapper(tables.Item, tables.orderitems))
         }))
     })
     session = create_session()
     query = SelectResults(session.query(tables.User))
     x = query.join_to('orders').join_to('items').select(tables.Item.c.item_id==2)
     print x.compile()
     self.assert_result(list(x), tables.User, tables.user_result[2])
コード例 #2
0
    def test_basic(self):
        class Department(object):
            def __init__(self, **kwargs):
                for k, v in kwargs.iteritems():
                    setattr(self, k, v)

            def __repr__(self):
                return "<Department %s>" % (self.name, )

        class Employee(object):
            def __init__(self, **kwargs):
                for k, v in kwargs.iteritems():
                    setattr(self, k, v)

            def __repr__(self):
                return "<Employee %s>" % (self.name, )

        mapper(Employee, employees)
        mapper(Department,
               departments,
               properties=dict(employees=relation(
                   Employee, lazy=False, backref='department')))

        d1 = Department(name='One')
        for e in 'Jim Jack John Susan'.split():
            d1.employees.append(Employee(name=e))

        d2 = Department(name='Two')
        for e in 'Joe Bob Mary Wally'.split():
            d2.employees.append(Employee(name=e))

        sess = create_session()
        sess.save(d1)
        sess.save(d2)
        sess.flush()

        q = sess.query(Department)
        filters = [q.join_to('employees'), Employee.c.name.startswith('J')]

        d = SelectResults(q)
        d = d.join_to('employees').filter(Employee.c.name.startswith('J'))
        d = d.distinct()
        d = d.order_by([desc(Department.c.name)])
        assert d.count() == 2
        assert d[0] is d2
コード例 #3
0
ファイル: eagertest3.py プロジェクト: nakedible/vpnease-l2tp
    def test_basic(self):
        class Department(object):
            def __init__(self, **kwargs):
                for k, v in kwargs.iteritems():
                    setattr(self, k, v)
            def __repr__(self):
                return "<Department %s>" % (self.name,)

        class Employee(object):
            def __init__(self, **kwargs):
                for k, v in kwargs.iteritems():
                    setattr(self, k, v)
            def __repr__(self):
                return "<Employee %s>" % (self.name,)

        mapper(Employee, employees)
        mapper(Department, departments,
                      properties=dict(employees=relation(Employee,
                                                         lazy=False,
                                                         backref='department')))

        d1 = Department(name='One')
        for e in 'Jim Jack John Susan'.split():
            d1.employees.append(Employee(name=e))

        d2 = Department(name='Two')
        for e in 'Joe Bob Mary Wally'.split():
            d2.employees.append(Employee(name=e))

        sess = create_session()
        sess.save(d1)
        sess.save(d2)
        sess.flush()

        q = sess.query(Department)
        filters = [q.join_to('employees'),
                   Employee.c.name.startswith('J')]

        d = SelectResults(q)
        d = d.join_to('employees').filter(Employee.c.name.startswith('J'))
        d = d.distinct()
        d = d.order_by([desc(Department.c.name)])
        assert d.count() == 2
        assert d[0] is d2