一个名为 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
指令强加?
最佳答案
您可以使用 single table inheritance 来做到这一点.但是,如果您的两列位于不同的表中,您将无法完全您想要执行的操作(不可能跨表执行唯一约束)。
如果单表继承不是一个选项,您可能想要 (1) 在 python 中强制唯一性,或者 (2) 放弃 sqlalchemy 继承,并且只使用外键将 Foo 和 Bar 链接到 Parametric。您可以将外键指向 name
,然后对 name
和 prop
进行唯一约束。
关于python - 使用多个表中的数据的唯一约束(SQL/SQLAlchemy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3535221/