使用多个表中的数据的唯一约束(SQL/SQLAlchemy)

Esc*_*alo 8 python sql sqlalchemy unique-constraint

调用的顶级类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)
Run Code Online (Sandbox Code Playgroud)

我使用SQLAlchemy作为我的ORM引擎.

我想强加一个UNIQUE约束来确保组合(name, prop)对于给定的类是唯一的(例如,只能Foo调用一个实例"my_foo"并且具有prop值,比如说"my_prop"),但是我没有看到如何引用name列的ParametricFoo表格UNIQUECONSTRAINT部分.

这种独特性是否可以通过FOREIGN KEY指令施加?

Dav*_*ave 5

您可以使用单表继承来做到这一点。但是,如果您的两列位于不同的表中,则您无法完全执行您想要执行的操作(不可能跨表执行唯一约束)。

如果单表继承不是一个选项,您可能想要 (1) 在 python 中强制唯一性,或者 (2) 放弃 sqlalchemy 继承,而只使用外键将 Foo 和 Bar 链接到 Parametric。您可以外键, 然后对和name进行唯一约束。nameprop