我有一个名为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)
答案 0 :(得分:0)
这是database migrations为什么很重要的一个很好的例子。理想情况下,所有数据定义都应使用迁移来完成。
由于您已经在使用Flask-SQLAlchemy,Flask-Migrate可能是一个不错的选择:
Flask-Migrate
添加到项目的依赖项中flask db init
初始化项目的迁移(这是一项一次性任务)flask db migrate
来生成迁移文件(仅应在开发迁移过程中完成此操作)flask db upgrade
进行应用(合并新代码时,即在每个开发机器上,登台,生产等过程中,都需要在数据库的每个副本上进行此操作)