Disons que j'ai une classe qui représente des emplacements. Les emplacements «appartiennent» aux clients. Les emplacements sont identifiés par un code Unicode à 10 caractères. Le «code d'emplacement» doit être unique parmi les emplacements d'un client spécifique.
The two below fields in combination should be unique
customer_id = Column(Integer,ForeignKey('customers.customer_id')
location_code = Column(Unicode(10))
Donc, si j'ai deux clients, le client "123" et le client "456". Ils peuvent tous les deux avoir un emplacement appelé "main" mais aucun des deux ne peut avoir deux emplacements appelés main.
Je peux gérer cela dans la logique métier, mais je veux m'assurer qu'il n'y a aucun moyen d'ajouter facilement l'exigence dans sqlalchemy. L'option unique = True semble ne fonctionner que lorsqu'elle est appliquée à un champ spécifique et cela ferait en sorte que la table entière n'ait qu'un code unique pour tous les emplacements.
la source
.c.
est un raccourci vers.columns.
la source
__table_args__ = (db.UniqueConstraint('customer_id', 'location_code'),)
, n'oubliez pas la virgule à la fin.