Мне нужно изменить данные во время обновления Alembic.
В настоящее время у меня есть таблица "игроков" в первой ревизии:
def upgrade():
op.create_table('player',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.Unicode(length=200), nullable=False),
sa.Column('position', sa.Unicode(length=200), nullable=True),
sa.Column('team', sa.Unicode(length=100), nullable=True)
sa.PrimaryKeyConstraint('id')
)
Я хочу представить таблицу команд. Я создал вторую ревизию:
def upgrade():
op.create_table('teams',
sa.Column('id', sa.Integer(), nullable=False),
sa.Column('name', sa.String(length=80), nullable=False)
)
op.add_column('players', sa.Column('team_id', sa.Integer(), nullable=False))
Я бы хотел, чтобы вторая миграция также добавила следующие данные:
-
Задать таблицу команд:
INSERT INTO teams (name) SELECT DISTINCT team FROM players;
-
Обновить player.team_id на основе имени player.team:
UPDATE players AS p JOIN teams AS t SET p.team_id = t.id WHERE p.team = t.name;
Как выполнить вставки и обновления внутри обновления script?