2013-01-09 62 views
0

我使用的SQLAlchemy在Postgres和声明的基础和沿许多这样的一对多关系的东西线的独特性:SQLAlchemy的很多:很多关系,设定一个表项

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个细节的独特特征 - 比如说亚洲)。现在,当我保存到数据库时,它会生成许多相同细节的特征 - 表中有许多单独的亚洲(黑发,棕色眼睛)条目,我想要的是让所有东西都集中在一个特征下。

我不确定我是否清楚地描述了这一点;让我知道如果我需要重新措辞。

回答

2

如果我正确理解你,你想在一组列上约束UNIQUE?如果是这样,那么这样的事情应该做的伎俩:

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

UniqueConstraint() - 啊,这就是我正在寻找。非常感谢! – binarysolo