Digamos que eu tenho uma classe que representa locais. Os locais "pertencem" aos clientes. Os locais são identificados por um código de 10 caracteres unicode. O "código do local" deve ser único entre os locais de um cliente específico.
The two below fields in combination should be unique
customer_id = Column(Integer,ForeignKey('customers.customer_id')
location_code = Column(Unicode(10))
Então, se eu tiver dois clientes, o cliente "123" e o cliente "456". Ambos podem ter um local chamado "principal", mas nenhum deles poderia ter dois locais chamados principal.
Eu posso lidar com isso na lógica de negócios, mas quero garantir que não haja como adicionar facilmente o requisito no sqlalchemy. A opção unique = True parece funcionar apenas quando aplicada a um campo específico e faria com que a tabela inteira tivesse apenas um código exclusivo para todos os locais.
fonte
.c.
é um atalho para.columns.
fonte
__table_args__ = (db.UniqueConstraint('customer_id', 'location_code'),)
, não esqueça a vírgula no final.