一个顶级类叫做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"
),但我不知道如何引用name
专栏来自Parametric
in the Foo
table UNIQUECONSTRAINT
部分。
这种独特性可以通过以下方式强加吗FOREIGN KEY
指令?
你可以使用以下方法来做到这一点单表继承 http://www.sqlalchemy.org/docs/orm/extensions/declarative.html#single-table-inheritance。但是,如果您的两列位于不同的表中,则不能这样做exactly您想要做什么(不可能跨表进行唯一约束)。
如果单表继承不是一个选项,您可能想要 (1) 在 python 中强制唯一性,或者 (2) 放弃 sqlalchemy 继承,而只使用外键将 Foo 和 Bar 链接到 Parametric。你可以使用外键name
,然后对name
and prop
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)