我正在尝试使用SQLAchemy将字段或列添加到现有表中。
下面是表类
class ReleaseVersion(Base):
__tablename__ = 'versions'
id = Column(Integer, primary_key=True, autoincrement=True)
release = Column(String(128), nullable=False, unique=True)
def __init__(self,release, id=None):
if(id):
self.id = id
self.release = release
我使用以下行初始化了表格
myDB.ReleaseVersion.__table__.create(bind=self.engine, checkfirst=True)
使用DB一段时间后,我需要添加一个布尔字段'is_currentversion',同时保留表的所有现有内容,但是我不确定如何做到这一点。
我应该手动在表中创建字段以更新类吗? 或者,在表类中添加字段,如果初始化函数中不存在该字段,则添加列?
答案 0 :(得分:1)
您要寻找的被称为数据库迁移。在alembic中使用Flask-Migrate之类的东西可以 在不擦除数据的情况下添加数据库。 Alembic还具有必要时用于撤消数据库更新的功能。
有一个很好的教程,可以在pythoncentral上设置Alembic
还有Pretty Printed的精彩视频,介绍了Flask-Migrate。
答案 1 :(得分:1)
您只需在模型中添加一列,然后运行以下命令即可。
flask db migrate -m "Your Message."
然后运行:
flask db upgrade
现在检查您的数据库。 另外,您可以参考Here