【问题标题】:How to add column to existing Table? in Flask SqlAlchemy如何将列添加到现有表?在 Flask SqlAlchemy 中
【发布时间】:2026-01-02 03:20:05
【问题描述】:

我有一个名为 User 的烧瓶 SqlAclchemy 表:

class User(db.Model):
    id = db.Column(db.INTEGER, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)

我现在已经编辑并添加了这一行;favCol = db.Column(db.String(12))

当我添加新用户时,如何更新表格以使其识别这个新列? 在我创建像User(username="bob",favCol="red")这样的用户的那一刻 它给了我一个错误:

TypeError: 'favCol' is an invalid keyword argument for User

我听说过 Migrate 的解决方案,但如果可能的话,我更喜欢更简单的解决方案

【问题讨论】:

  • 您查看过文档吗?他们可能在那里有信息
  • 是的,我什么也没找到。我也试过:db.update(User) 在 python 控制台中
  • 如果您已将favCol = db.Column(...) 声明正确添加到您的模型,您将不会收到invalid keyword argument for ... 错误。当 sqlalchemy 尝试写入表并且数据库中尚不存在该列时,您应该会收到 sqlalchemy.exc.OperationalError 错误。
  • 你不可能得到比这些更好的信息的答案:*.com/questions/7300948/…
  • 我可以去控制台中的 slite 并执行类似的操作:ALTER...

标签: python sqlalchemy flask-sqlalchemy


【解决方案1】:

如果您不关心数据库中的数据会被删除。 您可以执行以下操作:

从终端 如果 'py' 没有启动 python,请尝试 'python'。 在每个命令后按 Enter 键

py
from projectdirectory import db
db.drop_all()
db.create_all()

如果您关心现有数据,则需要使用诸如 flask_migrate 之类的东西,它使用 alembic 来帮助您在维护数据的同时进行数据库迁移。

【讨论】:

  • 有什么解决办法不清除我的数据吗?
  • 是的。请参阅我提交的答案的最后一段。虽然这不是一个简单的解决方案。在这里用几行来解释如何实现它太复杂了。你必须自己研究flask_migrate。