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)
def test_add_column(self): meta = sqlalchemy.MetaData() table = _table('a', meta, sqlalchemy.Column('id', sqlalchemy.Integer)) meta.create_all(self.engine) column = sqlalchemy.Column('uuid', sqlalchemy.String(36)) op = sa_migration.AddColumn('a', column) op.execute(self.ddlop) table = oslodbutils.get_table(self.engine, 'a') self.assertIn('id', table.c) self.assertIn('uuid', table.c)