[英]Update all records with flask migration script
我正在 Flask 中使用 MySQL 数据库,我需要更新模型。 我已准备好迁移以创建新表列和使用当前主键更新新列的脚本。 然后使用新的主键重新插入该行。
有没有办法将重新分配脚本与migrate
命令结合起来? 还是在模型更新后手动运行更好?
模型.py
class Outcome(db.Model):
id = db.Column(db.Integer, primary_key=True)
outcome_id = db.Column(db.Integer) # the new property, should match id
title = db.Column(db.String(64))
course_id = db.Column(db.Integer)
assignment_id = db.relationship('Assignment', uselist=False, back_populates='outcome')
迁移.py
from app import db
from app.models import Outcome
from sqlalchemy.orm.session import make_transient
outcomes = Outcome.query.all()
for outcome in outcomes:
db.session.expunge(outcome) # use only the object
make_transient(outcome)
outcome.outcome_id = outcome.id #add the new column value
outcome.id = None #set the ID to none to inherit a sequential ID
db.session.add(outcome)
db.session.commit()
这确实是一个偏好问题,它实际上取决于什么最适合您的工作流程。
您可以将其包含在 Flask-Migrate 迁移中,但请记住,在迁移脚本中使用模型通常不是一个好主意,因为您无法确保模型随着项目的发展而与迁移保持兼容。 如果您在迁移脚本中进行此更改,通常您会希望使用原始 SQL 语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.