Example #1
0
    def test_add_fk_after_add_column(self):
        exist_meta = sqlalchemy.MetaData()
        sqlalchemy.Table('a', exist_meta,
                         sqlalchemy.Column('id', sqlalchemy.Integer))
        sqlalchemy.Table('b', exist_meta,
                         sqlalchemy.Column('id', sqlalchemy.Integer))

        model_meta = sqlalchemy.MetaData()
        sqlalchemy.Table('a', model_meta,
                         sqlalchemy.Column('id', sqlalchemy.Integer))
        column = sqlalchemy.Column('a_id', sqlalchemy.Integer,
                                   sqlalchemy.ForeignKey('a.id'))
        table = sqlalchemy.Table('b', model_meta,
                                 sqlalchemy.Column('id', sqlalchemy.Integer),
                                 column)
        fkc = sqlalchemy.ForeignKeyConstraint(['a_id'], ['a.id'], table=table)

        addcolumn = sa_migration.AddColumn('b',
                                           column,
                                           desired_phase='migrate')
        addfk = sa_migration.AddForeignKey(fkc)

        scheduler = sa_migration.Scheduler()
        scheduler.add(addfk)
        scheduler.add(addcolumn)

        expand, migrate, contract = scheduler.schedule()
        self.assertEqual([], expand)
        self.assertEqual([addcolumn, addfk], migrate)
        self.assertEqual([], contract)
Example #2
0
    def test_remove_index_after_add(self):
        exist_meta = sqlalchemy.MetaData()
        oldtbl = sqlalchemy.Table('a', exist_meta,
                                  sqlalchemy.Column('id', sqlalchemy.Integer),
                                  sqlalchemy.Column('foo', sqlalchemy.Integer))

        model_meta = sqlalchemy.MetaData()
        newtbl = sqlalchemy.Table('a', model_meta,
                                  sqlalchemy.Column('id', sqlalchemy.Integer))

        old_index = sqlalchemy.Index('a_id_idx', oldtbl.c.id, oldtbl.c.foo)
        new_index = sqlalchemy.Index('a_id_idx', newtbl.c.id)

        dropidx = sa_migration.DropIndex(old_index)
        addidx = sa_migration.AddIndex(new_index, {})

        scheduler = sa_migration.Scheduler()
        scheduler.add(addidx)
        scheduler.add(dropidx)

        expand, migrate, contract = scheduler.schedule()
        self.assertEqual([], expand)
        self.assertEqual([dropidx, addidx], migrate)
        self.assertEqual([], contract)