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

时间:2019-06-02 23:45:58

标签: python database flask sqlalchemy flask-sqlalchemy

我有一个名为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)

1 个答案:

答案 0 :(得分:0)

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

由于您已经在使用Flask-SQLAlchemy,Flask-Migrate可能是一个不错的选择:

  1. Flask-Migrate添加到项目的依赖项中
  2. 运行flask db init初始化项目的迁移(这是一项一次性任务)
  3. 更新您的模型(听起来您已经完成了此操作)
  4. 运行flask db migrate来生成迁移文件(仅应在开发迁移过程中完成此操作)
  5. 使用flask db upgrade进行应用(合并新代码时,即在每个开发机器上,登台,生产等过程中,都需要在数据库的每个副本上进行此操作)