【问题标题】:alembic: adding id field to existing tablealembic:将 id 字段添加到现有表
【发布时间】:2016-07-17 23:51:48
【问题描述】:

这是我的previous question 的后续。基本上我有一个表,其中有两个外键链接到另外两个表。但我认为最好的方法是给表本身添加一个主键,这样它就变成了:

id, int, primary
foreign_id_1, int, primary
foreign_id_2, int, primary

问题是表中已经有很多项目了。所以当我运行alembic upgrade head 时,它会添加0 作为所有现有项目的值。这显然破坏了我的代码。

有没有办法将ids 追溯添加到现有项目中?

【问题讨论】:

    标签: python mysql sqlalchemy alembic


    【解决方案1】:

    您不应该在一个表中有多个主键。 See this question. 你想做什么?或许,你的问题可以通过two column index解决

    【讨论】:

    • 所以在 N 到 N 链接表中,只有两个外键本质上是错误的,对吧?
    • 你可以有两个外键,但主键应该是一个。
    【解决方案2】:

    您想要的不是额外的id 列作为主键。相反,您想要的是保留现有的复合主键并添加一个代理 id 列(不是主键列),该列自动递增以跟踪插入顺序。但是因为您已经将所有行插入到表中,所以您丢失了顺序,因此“恢复”该顺序没有任何意义。您可以简单地将0 分配给该列而不会出现问题。

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      • 2013-01-23
      相关资源
      最近更新 更多