2011-11-27 15 views
6
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) 

Esta es mi tabla hasta ahora. Como puede ver, estoy usando la forma "Declorativa" de definir tablas. Quiero crear una clave única, pero mi línea no funciona.En SQLAlchemy, ¿cómo creo un par único?

¿Cómo creo un par único?

Respuesta

11

UniqueConstraint no debe ser para una clase de modelo, sino para su tabla. Puede __table_args__ para hacer eso:

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'), 
        ) 
Cuestiones relacionadas