如何在sqlalchemy中创建外键?

1 投票
1 回答
936 浏览
提问于 2025-04-15 13:57

我在一个叫做Strings的表里有一个复合主键,包含一个整数类型的id和一个长度为2的字符串类型的lang。

我想从其他表中创建一个外键,只指向这个主键中的id部分。这意味着在Strings表中可能会有很多行(翻译)与这个外键匹配。我只需要存储这个id,并且希望数据库能够保持数据的一致性。

这样做可以吗?如果可以的话,怎么做呢?

1 个回答

3

这段内容来自于维基百科

在引用表中的列,必须是被引用表中的主键或者其他候选键。引用列中的一行值,必须在被引用表中的某一行中出现。

假设你有这样的情况:

id | var            
1  |  10            
1  |  11          
2  |  10

外键必须引用被引用表中的确切一行。这就是为什么它通常引用主键的原因。

在你的情况下,你需要创建另一个表Table1(id),在这里存储这些id,并且要把这个列设置为唯一或主键。你当前表中的id列并不是唯一的——在这种情况下你不能使用它……所以你需要创建一个Table1(id - 主键),并将你当前表中的id设置为指向Table1的外键。现在你可以在Table1的id上创建外键,而你当前表的主键也没问题。

撰写回答