SQLAlchemy:如何将列添加到现有表?

时间:2019-03-20 22:44:38

标签: python flask sqlalchemy flask-sqlalchemy

我正在尝试使用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',同时保留表的所有现有内容,但是我不确定如何做到这一点。

我应该手动在表中创建字段以更新类吗? 或者,在表类中添加字段,如果初始化函数中不存在该字段,则添加列?

2 个答案:

答案 0 :(得分:1)

您要寻找的被称为数据库迁移。在alembic中使用Flask-Migrate之类的东西可以 在不擦除数据的情况下添加数据库。 Alembic还具有必要时用于撤消数据库更新的功能。

有一个很好的教程,可以在pythoncentral上设置Alembic

还有Pretty Printed的精彩视频,介绍了Flask-Migrate。

答案 1 :(得分:1)

您只需在模型中添加一列,然后运行以下命令即可。

flask db migrate -m "Your Message."

然后运行:

flask db upgrade

现在检查您的数据库。 另外,您可以参考Here