解决的问题就是由于需要新增表对象属性时使用db.create_all()
方法不能够将新增的属性在数据库中保存,所以才会使用flask-migrate迁移ORM模型
导包
pip install flask-migrate
在pycharm中的终端进行输入,可以确保是在自己的运行环境中安装.
代码
from flask_migrate import Migrate
migrate = Migrate(app, db)
orm模型映射三步
flask db init
这个只需要在命令行执行一次
就会产生一个名为migrations的包,里面存放的都是一些迁移脚本
命令行执行flask db migrate
识别OEM模型的改变,生成迁移脚本
此时可以发现本次的迁移脚本
使用flask db upgrade
在命令行中运行,更新本次的操作
其中会自动生成一个记录版本号的表
测试
给User表新增性别属性
class User(db.Model):
__tablename__ = "user" # 表名
id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 创建属性,类型为integer,设为主键,自增
username = db.Column(db.String(100), nullable=False) # valchar(100), 非空
password = db.Column(db.String(100), nullable=False) # valchar(100), 非空
age = db.Column(db.Integer)
gender = db.Column(db.String(1)) # 新增属性
articles = db.relationship("Article", back_populates="author")
用命令行使用flask db migrate
生成新的迁移脚本,就会出现新的运行脚本
用命令行执行flask db upgrade
更新表,可以看到表中确实多了gender这个属性