我有许多不同模式的表,我使用了docs中的模式。我的一些表需要多列约束,并且不清楚字典键将用于声明该唯一约束,正如他们在上一节中提到的那样
在下面的模型中,我想用name, key, org. 我目前必须在 sql 中执行此操作…
name, key, org
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))
我想我不久前遇到了这个问题。如果我没记错的话,这只是将“模式字典”移动到还包含您的约束的元组内部的问题。
如果这不起作用,我可以尝试进一步挖掘,但文档似乎同意使用声明性表配置via__table_args__可以是一个包含位置参数(如约束)的元组,并且作为最后一个参数,一个带有关键字参数的字典,如schema 用于 Table .
__table_args__
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))