0

我将 SQLAlchemy 与 Postgres 和声明性基础一起使用,并且具有这种多对多关系的内容:

user_trait_association = Table('user_trait', Base.metadata,
    Column('user_id', Integer, ForeignKey('user.id')),
    Column('trait_id', Integer, ForeignKey('trait.id'))
)

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)
    trait = relationship('SomeTrait', backref='user')

class SomeTrait(Base):
    __tablename__ = 'sometrait'
    id = Column(Integer, primary_key=True)
    detail1 = Column(String)
    detail2 = Column(String)

我的问题:我如何设置它以使特征是独一无二的——也就是说,说 detail1 = 眼睛颜色,detail2 = 头发颜色......我如何写它使得 Bob 和 Jim 都有黑色头发和棕色的眼睛(结合为 2 个细节的一个独特特征 - 比如亚洲人)。现在,当我保存到数据库时,它会生成许多具有相同细节的特征——该表有许多单独的亚洲(黑发,棕色眼睛)条目,而我想要的是将所有内容归为一个特征。

我不确定我是否清楚地描述了这一点;让我知道是否需要改写。

4

1 回答 1

2

如果我理解正确,您想要UNIQUE对一组列进行约束吗?如果是这样,那么这样的事情应该可以解决问题:

class SomeTrait(Base):
    __tablename__ = 'sometrait'
    id = Column(Integer, primary_key=True)
    detail1 = Column(String)
    detail2 = Column(String)
    __table_args__ = (
        UniqueConstraint('detail1', 'detail2'),
    )
于 2013-01-09T11:41:29.320 回答