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

标签 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)

我将 SQLAlchemy 用于我的 ORM 引擎。

我想施加一个 UNIQUE 约束,以确保组合(name, prop)对于给定类是唯一的(例如,仅Foo 的一个实例可以称为 "my_foo" 并且具有一个 prop 值,比方说 "my_prop") ,但我看不到如何从 FooUNIQUECONSTRAINT 部分的 Parametric 中引用 name 列。

这种唯一性是否可以通过 FOREIGN KEY 指令强加?

最佳答案

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

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

关于python - 使用多个表中的数据的唯一约束(SQL/SQLAlchemy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3535221/

相关文章:

MYSQL - 来自两个表的查询

python - 如何正确构建 SQLAlchemy(声明式)python 项目及其单元测试

python - 如何在 sqlalchemy 中返回执行原始查询

Python:打印树的所有节点无意中存储数据

python - 使用 Python 访问内存映射文件

python - SQLAlchemy:@property 映射?

postgresql - Flask-sqlalchemy 在重新启动数据库服务器后失去连接

python - 使用 "settings"模块创建常量?

sql - 如何将没有时区的时间转换为没有时区的时间戳?

PHP PDO 如何显示 top SQL 计数