使用多个表中的数据设置唯一约束(SQL / SQLAlchemy)
有一个叫做 Parametric
的顶级类,用来创建可以有参数的对象:
class Parametric(object):
def __init__(self, name):
self.name = name
self.pars = []
class Foo(Parametric):
def __init__(self, name, prop):
self.prop = prop
Parametric.__init__(self, name)
class Bar(Parametric):
def __init__(self, name, prop):
self.prop = prop
Parametric.__init__(self, name)
我使用 SQLAlchemy 作为我的 ORM 引擎。
我想要设置一个 UNIQUE
约束,确保在某个类中,(name
, prop
) 的组合是唯一的(比如说,只有一个 Foo
实例可以叫做 "my_foo"
,并且它的 prop
值可以是 "my_prop"
),但是我不知道怎么在 Foo
表的 UNIQUECONSTRAINT
部分引用 Parametric
中的 name
列。
这个唯一性约束是否可以通过 FOREIGN KEY
指令来实现呢?
2 个回答
0
如果有两个不同的表格,你可以在表单验证的时候检查一下是否有重复的内容。
5
你可以使用单表继承来实现这个功能。不过,如果你的两个列在不同的表里,那就不能完全按照你想的方式来做(因为在不同的表之间无法设置唯一约束)。
如果单表继承不适合你,那你可能需要选择两种方法中的一种:(1) 在Python中强制执行唯一性,或者 (2) 放弃SQLAlchemy的继承,直接使用外键将Foo和Bar与Parametric关联起来。你可以将外键指向name
,然后在name
和prop
上设置唯一约束。