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

Python SQLAlchemy:在models.py中更新模型时,如何更新数据库中的表,python,database,flask,sqlalchemy,flask-sqlalchemy,Python,Database,Flask,Sqlalchemy,Flask Sqlalchemy,我有一个名为User的assqlalchemy模型,我想向类添加另一个属性,例如:address 我尝试添加一个新的类属性,希望SQLAlchemy能够意识到类中有变化,并自动更新表。事实并非如此 我在网上查看了如何对模型进行更改,然后自动更新表,但我所找到的只是db.sessions,在那里他们手动键入想要进行的更改。是否有更好的方法更新模型 类用户(db.Model): id=db.Column(db.Integer,主键=True) username=db.Column(db.String

我有一个名为
User
的assqlalchemy模型,我想向类添加另一个属性,例如:
address

我尝试添加一个新的类属性,希望SQLAlchemy能够意识到类中有变化,并自动更新表。事实并非如此

我在网上查看了如何对模型进行更改,然后自动更新表,但我所找到的只是
db.sessions
,在那里他们手动键入想要进行的更改。是否有更好的方法更新模型

类用户(db.Model):
id=db.Column(db.Integer,主键=True)
username=db.Column(db.String(20),unique=True,nullable=False)
email=db.Column(db.String(120),unique=True,nullable=False)
image\u file=db.Column(db.String(20),nullable=False,default='default.jpg')
password=db.Column(db.String(60),null=False)
#我要添加的新类属性
address=db.Column(db.String(100),null=False)

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

由于您已经在使用炼金术,因此可能非常适合:

  • 将<代码>添加到项目的依赖项中
  • 运行
    flask db init
    为项目初始化迁移(这是一项一次性任务)
  • 更新您的模型(听起来您已经这样做了)
  • 运行
    flask db migrate
    生成迁移文件(这只应作为开发迁移的一部分进行)
  • 使用
    flask db upgrade
    (合并新代码时,需要在数据库的每个副本上执行此操作,即在每台开发机器上、暂存中、生产中等)

  • 谢谢。我猜命令“flask db init”中的“db”来自_init__.py。如果是这样,那么我是否在uuu init.py uuu目录中运行该命令?
    flask db
    命令应由
    flask SQLAlchemy
    flask Migrate
    提供。您可能希望从存储库的根目录下运行这些命令。您是否能够按照下面所示的答案运行这些命令?如果是,请记住。这向其他用户显示您已经找到了解决方案。是的,我能够让它工作。我现在和一个朋友一起工作,所以为我们俩设置flask migrate有点困难,但我们最终忽略了migrations文件夹。传统做法是忽略migrations文件夹。我只是想确定我做得对吗?不,忽略migrations文件夹绝对不是常规做法。这应该分享。如果需要修改数据库架构,请创建迁移并将其添加到存储库中。迁移应该在需要的地方与代码一起应用。例如,在切换分支时应用迁移。当你回去的时候,你可能需要反转它们。(考虑一下:如果忽略migrations文件夹,您和您的朋友如何维护相同的数据库模式?如果您有不同的模式,您应该在生产中使用哪种模式?)