SQLAlchemy:当我更新models.py中的模型时,如何更新数据库中的表

问题描述 投票:0回答:1

我有一个名为

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)
python database flask sqlalchemy flask-sqlalchemy
1个回答
3
投票

这是一个很好的例子,说明了为什么数据库迁移很重要。理想情况下,所有数据定义都应使用迁移来完成。

既然您已经在使用 Flask-SQLAlchemy,那么 Flask-Migrate 可能是一个不错的选择:

  1. Flask-Migrate
    添加到项目的依赖项中。

  2. 运行

    flask db init
    来初始化项目的迁移(这是一项一次性任务)。

  3. 更新您的模型(听起来您已经完成了此操作)。

  4. 运行

    flask db migrate
    生成迁移文件(这应该仅作为开发迁移的一部分来完成)。

    查看并在必要时编辑生成的迁移文件,以确保它们捕获必要的更改。这些文件应该提交到您的存储库。

  5. 使用

    flask db upgrade
    应用它(合并新代码时,需要在数据库的每个副本上完成此操作,即在每台开发机器上、在登台中、在生产中等)

© www.soinside.com 2019 - 2024. All rights reserved.