SQLAlchemy多列约束。

4
我有许多不同模式下的表格,我使用了来自文档的模式。我的一些表需要使用多列约束条件,但在上面的章节中提到的用于声明唯一约束条件的字典键值并不清晰。

在下面的模型中,我想要创建一个包含name, key, org的唯一约束条件。目前我必须在SQL中实现这个唯一约束条件...

class Parent(Base):
  __tablename__ = 'parent'
  __table_args__ = {'schema': 'example'}

  id = Column(Integer, primary_key=True)
  name = Column(String(512))
  key = Column(String())
  org = Column(String(36))
1个回答

3

我记得有一段时间遇到了这个问题。 如果我没记错的话,只需要将"schema dict"移动到包含约束的元组内即可。

如果这样做不行,我可以尝试进一步查找,但文档似乎认同通过__table_args__使用声明性表配置可以是一个包含位置参数(如约束)和最后一个参数为带有关键字参数的字典,例如表模式用于Table

class Parent(Base):
    __tablename__ = 'parent'
    __table_args__ = (
        UniqueConstraint('name', 'key', 'org'),
        {'schema': 'example'},
    )

    id = Column(Integer, primary_key=True)
    name = Column(String(512))
    key = Column(String())
    org = Column(String(36))

我太菜了,看文档看不懂,你指出来后发现它就在第三个例子里...谢谢! - Crushing
我记得当我遇到这个问题时,花了很长时间才找到解决方案。现在我主要使用命令式映射,这也值得一看,以保持模型的独立性。 - ljmc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接