2013-01-09 111 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