alembic:将id字段添加到现有表

时间:2016-03-30 06:11:20

标签: python mysql sqlalchemy alembic

这是我previous question的后续内容。基本上我有一个表有2个外键链接到另外两个表。但我认为最好的方法是将一个主键添加到表本身,以便它变为:

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

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

有没有办法可以追溯性地将id添加到现有项目中?

2 个答案:

答案 0 :(得分:1)

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

解决

答案 1 :(得分:1)

您想要的不是附加id列作为主键。您想要的是保留现有的复合主键并添加代理0列(主键列),该列自动递增以跟踪插入顺序。但是因为您已经将所有行都插入到表格中,所以您已经丢失了订单,因此恢复"恢复"那个命令。您只需将{{1}}分配给该列即可。