ฉันต้องการแก้ไขข้อมูลระหว่างการอัพเกรด 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 ตามชื่อผู้เล่นทีม:
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
ไฟล์)?