在SQLAlchemy中,如何创建唯一的对?

时间:2011-11-27 04:57:10

标签: mysql sql database orm sqlalchemy

class PostsSubscribe(Base):
    __tablename__ = 'posts_subscribe'
    id = Column(Integer, primary_key = True)
    post_id = Column(Integer, ForeignKey('posts_posts.id'), nullable=False)
    persona_id = Column(Integer, ForeignKey('personas_personas.id'), nullable=False)

    UniqueConstraint('post_id', 'persona_id') #this doesn't work.
Base.metadata.create_all(engine)

到目前为止这是我的表。如您所见,我正在使用“Declorative”方式定义表格。我想创建一个唯一的键,但我的行不起作用。

如何创建唯一的对?

1 个答案:

答案 0 :(得分:12)

UniqueConstraint不应该是模型类,而是它的表。你可以__table_args__做到这一点:

class PostsSubscribe(Base):
    __tablename__ = 'posts_subscribe'
    id = Column(Integer, primary_key = True)
    post_id = Column(Integer, ForeignKey('posts_posts.id'), nullable=False)
    persona_id = Column(Integer, ForeignKey('personas_personas.id'), nullable=False)
    __table_args__ = (UniqueConstraint('post_id', 'persona_id', name='_person_post_uc'),
                     )