Пример #1
0
    def test_reduce_aliased_union(self):
        metadata = MetaData()

        item_table = Table(
            'item', metadata,
            Column('id', Integer, ForeignKey('base_item.id'),
                   primary_key=True), Column('dummy', Integer, default=0))
        base_item_table = Table(
            'base_item', metadata, Column('id', Integer, primary_key=True),
            Column('child_name', String(255), default=None))
        from sqlalchemy.orm.util import polymorphic_union
        item_join = polymorphic_union(
            {
                'BaseItem':
                base_item_table.select(
                    base_item_table.c.child_name == 'BaseItem'),
                'Item':
                base_item_table.join(item_table)
            }, None, 'item_join')
        eq_(
            util.column_set(
                sql_util.reduce_columns([
                    item_join.c.id, item_join.c.dummy, item_join.c.child_name
                ])),
            util.column_set(
                [item_join.c.id, item_join.c.dummy, item_join.c.child_name]))
Пример #2
0
 def __mapper_args__(cls):
     name = cls.__name__
     if name in abstract_classes:
         pjoin = polymorphic_union({
             scls.__tablename__: scls.__table__ for scls in
             cls.get_subclasses()}, 'type')
         return {
             'polymorphic_identity': name,
             'with_polymorphic': ('*', pjoin),
         }
     else:
         return {
             'polymorphic_identity': name,
             'concrete': True,
         }
Пример #3
0
 def __mapper_args__(cls):
     name = cls.__name__
     if name in abstract_classes:
         pjoin = polymorphic_union(
             {
                 scls.__tablename__: scls.__table__
                 for scls in cls.get_subclasses()
             }, 'type')
         return {
             'polymorphic_identity': name,
             'with_polymorphic': ('*', pjoin),
         }
     else:
         return {
             'polymorphic_identity': name,
             'concrete': True,
         }
Пример #4
0
    def test_reduce_aliased_union_2(self):
        metadata = MetaData()

        page_table = Table(
            'page',
            metadata,
            Column('id', Integer, primary_key=True),
        )
        magazine_page_table = Table(
            'magazine_page',
            metadata,
            Column('page_id', Integer, ForeignKey('page.id'),
                   primary_key=True),
        )
        classified_page_table = Table(
            'classified_page',
            metadata,
            Column('magazine_page_id',
                   Integer,
                   ForeignKey('magazine_page.page_id'),
                   primary_key=True),
        )

        from sqlalchemy.orm.util import polymorphic_union
        pjoin = polymorphic_union(
            {
                'm':
                page_table.join(magazine_page_table),
                'c':
                page_table.join(magazine_page_table).join(
                    classified_page_table),
            }, None, 'page_join')

        self.assertEquals(
            util.column_set(
                sql_util.reduce_columns(
                    [pjoin.c.id, pjoin.c.page_id, pjoin.c.magazine_page_id])),
            util.column_set([pjoin.c.id]))
Пример #5
0
    def test_reduce_aliased_union(self):
        metadata = MetaData()
        item_table = Table(
            'item', metadata,
            Column('id', Integer, ForeignKey('base_item.id'), primary_key=True),
            Column('dummy', Integer, default=0))

        base_item_table = Table(
            'base_item', metadata,
            Column('id', Integer, primary_key=True),
            Column('child_name', String(255), default=None))
        
        from sqlalchemy.orm.util import polymorphic_union
        
        item_join = polymorphic_union( {
            'BaseItem':base_item_table.select(base_item_table.c.child_name=='BaseItem'),
            'Item':base_item_table.join(item_table),
            }, None, 'item_join')
            
        self.assertEquals(
            set(sql_util.reduce_columns([item_join.c.id, item_join.c.dummy, item_join.c.child_name])),
            set([item_join.c.id, item_join.c.dummy, item_join.c.child_name])
        )    
Пример #6
0
    def test_reduce_aliased_union_2(self):
        metadata = MetaData()

        page_table = Table('page', metadata,
            Column('id', Integer, primary_key=True),
        )
        magazine_page_table = Table('magazine_page', metadata,
            Column('page_id', Integer, ForeignKey('page.id'), primary_key=True),
        )
        classified_page_table = Table('classified_page', metadata,
            Column('magazine_page_id', Integer, ForeignKey('magazine_page.page_id'), primary_key=True),
        )
        
        from sqlalchemy.orm.util import polymorphic_union
        pjoin = polymorphic_union(
            {
                'm': page_table.join(magazine_page_table),
                'c': page_table.join(magazine_page_table).join(classified_page_table),
            }, None, 'page_join')
            
        self.assertEquals(
            set(sql_util.reduce_columns([pjoin.c.id, pjoin.c.page_id, pjoin.c.magazine_page_id])),
            set([pjoin.c.id])
        )