8

一个名为的顶级类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"),但我不知道如何nameParametricFoo表格UNIQUECONSTRAINT部分。

这种独特性是可以通过FOREIGN KEY指令强加的吗?

4

2 回答 2

3

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

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

于 2011-09-19T19:51:24.567 回答
0

如果有 2 个不同的表,您可以在表单验证中检查它是否重复。

于 2021-12-25T19:55:37.177 回答