【问题标题】:SQLAlchemy objects don't recognize new columns after DB schema was changed更改数据库架构后,SQLAlchemy 对象无法识别新列
【发布时间】:2021-03-14 17:57:30
【问题描述】:

我设置了一个本地数据库,为此我使用 SQLAlchemy 对象创建对象关系映射。

在我更改数据库的架构之前一切都很好 - 包括向其中一个表添加一个新列。现在我不断看到:

sqlalchemy.exc.NoReferencedColumnError:无法初始化表“ModelPrice”上的 ForeignKey“ModelFit.id”的目标列:表“ModelFit”没有名为“id”的列

其中 'id' 是 ModelFit 表的“Id”列的 SQLALchemy Column 对象。

新数据库上的直接 SQL 查询执行良好,唯一的问题是初始化此映射。

我看到有人说他们通过“从项目中删除 .db 文件并再次运行它”来解决这个问题,但我没有任何这样的文件。我什至不使用烧瓶或任何东西来创建数据库,而是使用 SQL 直接在本地数据库中完成的。

对这里发生的事情有任何帮助或见解吗?或者更多信息会有帮助吗?

【问题讨论】:

  • 您是否更新了模型以匹配表格?

标签: python orm sqlalchemy flask-sqlalchemy sqlalchemy-migrate


【解决方案1】:

最终想通了 - 似乎列的顺序必须相同。 在架构上运行 ALTER TABLE 以添加“Id”列将其添加到右侧。我的 SQLAlchemy 类将“id”列列为第一个。

我无法确认原因,因为我没有查看文档中可以确认这一点的部分,但有趣的是,情况确实如此。

所以基本上不得不删除表格并按照所需的顺序重新制作。

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多