小编典典

SQLAlchemy 多列约束

all

我有许多不同模式的表,我使用了docs中的模式。我的一些表需要多列约束,并且不清楚字典键将用于声明该唯一约束,正如他们在上一节中提到的那样

在下面的模型中,我想用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))

阅读 97

收藏
2022-05-18

共1个答案

小编典典

我想我不久前遇到了这个问题。如果我没记错的话,这只是将“模式字典”移动到还包含您的约束的元组内部的问题。

如果这不起作用,我可以尝试进一步挖掘,但文档似乎同意使用声明性表配置via__table_args__可以是一个包含位置参数(如约束)的元组,并且作为最后一个参数,一个带有关键字参数的字典,如schema 用于 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))
2022-05-18