【发布时间】:2020-12-30 02:15:12
【问题描述】:
我目前有一个使用 Flask 的实时 Heroku psql 数据库,其中包含我需要的数据。但是,我还需要使用表中的新列来更新数据库。每当我更新表并将其推送到 Heroku 时,应用程序都会关闭,说原始数据不遵循新模式。那么用 Heroku 上托管的数据更新数据库结构的最佳方法是什么?
例如: models_original.py
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String, unique=True, nullable=False)
到 models_new.py
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String, unique=True, nullable=False)
last_name = db.Column(db.String, unique=True, nullable=False)
【问题讨论】:
-
您在使用数据库迁移吗?通常,您会部署新代码,然后运行迁移。
-
@Chris 不,我不是。添加数据库迁移是否为时已晚(还是为时已晚)?
-
最好从一开始就使用它们,但您现在应该可以开始了。我认为Flask-Migrate 是 Flask 和 SQLAlchemy 最流行的迁移库。 (不过,这并不能完全解决您的问题。通过迁移,您将推送新代码,然后运行迁移。没有它们,您将推送新代码,然后以其他方式修改数据库。在这两种情况下代码和数据库将暂时不同步。迁移仍然是一个非常好的主意。)
标签: python heroku flask-sqlalchemy