コード例 #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)
コード例 #2
0
    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)