2011-11-27 20 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) 

Questo è il mio tavolo finora. Come puoi vedere, sto usando il modo "Declorative" per definire le tabelle. Voglio creare una chiave univoca, ma la mia linea non funziona.In SQLAlchemy, come posso creare una coppia univoca?

Come si crea una coppia univoca?

risposta

11

UniqueConstraint non dovrebbe essere per una classe di modello, ma per la sua tabella. Puoi farlo __table_args__ per farlo:

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'), 
        ) 
Problemi correlati