我有一个名为
User
的 SQLAlchemy 模型,我想向该类添加另一个属性,例如:address
。
我尝试添加一个新的类属性,并希望 SQLAlchemy 能够意识到类中存在更改并自动更新表。事实并非如此。
我在网上查看了如何对模型进行更改,然后自动更新表格,但我发现的只是
db.sessions
,他们手动输入他们想要进行的更改。有更好的方法来更新模型吗?
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
password = db.Column(db.String(60), nullable=False)
# new class property that I want to add
address = db.Column(db.String(100), nullable=False)
这是一个很好的例子,说明了为什么数据库迁移很重要。理想情况下,所有数据定义都应使用迁移来完成。
既然您已经在使用 Flask-SQLAlchemy,那么 Flask-Migrate 可能是一个不错的选择:
将
Flask-Migrate
添加到项目的依赖项中。
运行
flask db init
来初始化项目的迁移(这是一项一次性任务)。
更新您的模型(听起来您已经完成了此操作)。
运行
flask db migrate
生成迁移文件(这应该仅作为开发迁移的一部分来完成)。
查看并在必要时编辑生成的迁移文件,以确保它们捕获必要的更改。这些文件应该提交到您的存储库。
使用
flask db upgrade
应用它(合并新代码时,需要在数据库的每个副本上完成此操作,即在每台开发机器上、在登台中、在生产中等)