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;
players.team 이름에 따라 players.team_id를 업데이트하십시오.
UPDATE players AS p JOIN teams AS t SET p.team_id = t.id WHERE p.team = t.name;
업그레이드 스크립트 내에서 삽입 및 업데이트를 실행하려면 어떻게합니까?
op.execute
에upgrade()
의해 사용되는 기본 템플릿을 제공하는 방법이alembic revision
명령 (생성을위한 기본 본문.py
파일)?