我有一个使用sqlalchemy定义的模型,如:
class Recommendation(Base):
""" An entry is created by each recommender per URL """
__tablename__ = 'recommendation'
id = Column(Integer, primary_key=True)
url_id = Column(Integer, ForeignKey('url.id'))
我最近意识到我(愚蠢地)忘记在那里添加'score'参数,但系统正在生产中。我更新了我的定义,然后包括一个分数:
class Recommendation(Base):
""" An entry is created by each recommender per URL """
__tablename__ = 'recommendation'
id = Column(Integer, primary_key=True)
url_id = Column(Integer, ForeignKey('url.id'))
score = Column(Float, default=0.0)
更改模型适用于我的行为测试(yay表示完全覆盖),因为我会在每次测试时销毁并重新创建数据库。问题是,在生产中,得分列不存在,因此仅将“得分”添加到模型不起作用。我目前的计划是使用alembic将数据库迁移到具有分数列,但在我的测试环境中,一切都会中断,因为alembic尝试添加已存在的列。但是,如果我使用alembic,那么我的原始模型文件尚未使用score列更新,并且我的测试未通过且代码不起作用,但得分列是在测试数据库中创建的。
那么如何将“得分”列添加到我的代码的其余部分仅在将其添加到数据库后使用的模型中?