Ejemplo n.º 1
0
    def test_basic(self):
        metadata = self.metadata

        s_table = Table(
            "sometable",
            metadata,
            Column("id_a", Unicode(255), primary_key=True),
            Column("id_b", Unicode(255), primary_key=True, unique=True),
            Column("group", Unicode(255), primary_key=True),
            Column("col", Unicode(255)),
            UniqueConstraint("col", "group"),
        )

        # "group" is a keyword, so lower case
        normalind = Index("tableind", s_table.c.id_b, s_table.c.group)
        Index("compress1",
              s_table.c.id_a,
              s_table.c.id_b,
              oracle_compress=True)
        Index(
            "compress2",
            s_table.c.id_a,
            s_table.c.id_b,
            s_table.c.col,
            oracle_compress=1,
        )

        metadata.create_all()

        mirror = MetaData(testing.db)
        mirror.reflect()

        metadata.drop_all()
        mirror.create_all()

        inspect = MetaData(testing.db)
        inspect.reflect()

        def obj_definition(obj):
            return (
                obj.__class__,
                tuple([c.name for c in obj.columns]),
                getattr(obj, "unique", None),
            )

        # find what the primary k constraint name should be
        primaryconsname = testing.db.scalar(
            text("""SELECT constraint_name
               FROM all_constraints
               WHERE table_name = :table_name
               AND owner = :owner
               AND constraint_type = 'P' """),
            table_name=s_table.name.upper(),
            owner=testing.db.dialect.default_schema_name.upper(),
        )

        reflectedtable = inspect.tables[s_table.name]

        # make a dictionary of the reflected objects:

        reflected = dict([
            (obj_definition(i), i)
            for i in reflectedtable.indexes | reflectedtable.constraints
        ])

        # assert we got primary key constraint and its name, Error
        # if not in dict

        assert (reflected[(PrimaryKeyConstraint, ("id_a", "id_b", "group"),
                           None)].name.upper() == primaryconsname.upper())

        # Error if not in dict

        eq_(reflected[(Index, ("id_b", "group"), False)].name, normalind.name)
        assert (Index, ("id_b", ), True) in reflected
        assert (Index, ("col", "group"), True) in reflected

        idx = reflected[(Index, ("id_a", "id_b"), False)]
        assert idx.dialect_options["oracle"]["compress"] == 2

        idx = reflected[(Index, ("id_a", "id_b", "col"), False)]
        assert idx.dialect_options["oracle"]["compress"] == 1

        eq_(len(reflectedtable.constraints), 1)
        eq_(len(reflectedtable.indexes), 5)
Ejemplo n.º 2
0
    def test_basic(self):
        metadata = self.metadata

        s_table = Table(
            "sometable", metadata,
            Column("id_a", Unicode(255), primary_key=True),
            Column("id_b",
                   Unicode(255),
                   primary_key=True,
                   unique=True),
            Column("group", Unicode(255), primary_key=True),
            Column("col", Unicode(255)),
            UniqueConstraint('col', 'group'))

        # "group" is a keyword, so lower case
        normalind = Index('tableind', s_table.c.id_b, s_table.c.group)
        Index('compress1', s_table.c.id_a, s_table.c.id_b,
              oracle_compress=True)
        Index('compress2', s_table.c.id_a, s_table.c.id_b, s_table.c.col,
              oracle_compress=1)

        metadata.create_all()
        mirror = MetaData(testing.db)
        mirror.reflect()
        metadata.drop_all()
        mirror.create_all()

        inspect = MetaData(testing.db)
        inspect.reflect()

        def obj_definition(obj):
            return (obj.__class__,
                    tuple([c.name for c in obj.columns]),
                    getattr(obj, 'unique', None))

        # find what the primary k constraint name should be
        primaryconsname = testing.db.scalar(
            text(
                """SELECT constraint_name
               FROM all_constraints
               WHERE table_name = :table_name
               AND owner = :owner
               AND constraint_type = 'P' """),
            table_name=s_table.name.upper(),
            owner=testing.db.dialect.default_schema_name.upper())

        reflectedtable = inspect.tables[s_table.name]

        # make a dictionary of the reflected objects:

        reflected = dict([(obj_definition(i), i) for i in
                         reflectedtable.indexes
                         | reflectedtable.constraints])

        # assert we got primary key constraint and its name, Error
        # if not in dict

        assert reflected[(PrimaryKeyConstraint, ('id_a', 'id_b',
                         'group'), None)].name.upper() \
            == primaryconsname.upper()

        # Error if not in dict

        eq_(
            reflected[(Index, ('id_b', 'group'), False)].name,
            normalind.name
        )
        assert (Index, ('id_b', ), True) in reflected
        assert (Index, ('col', 'group'), True) in reflected

        idx = reflected[(Index, ('id_a', 'id_b', ), False)]
        assert idx.dialect_options['oracle']['compress'] == 2

        idx = reflected[(Index, ('id_a', 'id_b', 'col', ), False)]
        assert idx.dialect_options['oracle']['compress'] == 1

        eq_(len(reflectedtable.constraints), 1)
        eq_(len(reflectedtable.indexes), 5)