sqlalchemy birden çok sütun benzersiz
Hadi konumları temsil eden bir sınıf var ki. Yerleri "ait" için müşteriler. Yerleri 10 karakter bir unicode kod ile tanımlanır. "Kod konumu" belirli bir müşteri için yerler arasında benzersiz olmalıdır.
The two below fields in combination should be unique
customer_id = Column(Integer,ForeignKey('customers.customer_id')
location_code = Column(Unicode(10))
Eğer öyleyse iki müşteri var, "" müşteri "456". 123 müşteri İkisi de konum olarak adlandırılır "ana" ama ne iki yerde olabilir denilen ana.
İş mantığı bunu halledebilirim ama kolayca sqlalchemy şartı eklemek için bir yolu var mı emin olmak istiyorum. Benzersiz=Doğru seçenek yalnızca belirli bir alana uygulandığında iş gibi görünüyor ve tüm tabloyu sadece tüm mekanlar için benzersiz bir kod neden olur.
CEVAP
Column
: documentation özü
benzersizDoğru zaman, bu sütunda gösterir benzersiz içerir veya kısıtlamadiziniçin de geçerlidir, belirten Endeksi benzersiz bayrağı ile oluşturulmalıdır. Birden çok sütun belirtmek için kısıtlama veya açık adını belirtmek için/dizin kullanımı UniqueConstraint Index açıkça oluşturur.
Bu eşleşen bir Sınıf bir Tablo için değil, ait olarak, tabloda bu tanım, veya __table_args__
gibi bildirimsel kullanarak bir beyan:
# version1: table definition
mytable = Table('mytable', meta,
# ...
Column('customer_id', Integer, ForeignKey('customers.customer_id')),
Column('location_code', Unicode(10)),
UniqueConstraint('customer_id', 'location_code', name='uix_1')
)
# or the index, which will ensure uniqueness as well
Index('myindex', mytable.c.customer_id, mytable.c.location_code, unique=True)
# version2: declarative
class Location(Base):
__tablename__ = 'locations'
id = Column(Integer, primary_key = True)
customer_id = Column(Integer, ForeignKey('customers.customer_id'), nullable=False)
location_code = Column(Unicode(10), nullable=False)
__table_args__ = (UniqueConstraint('customer_id', 'location_code', name='_customer_location_uc'),
)
Varlık Çerçevesi içinde birden çok süt...
Birden çok sütun benzersiz kısıtlama...
Nasıl MySQL birden çok sütun benzersiz...
Kısıtlama - birden çok sütun üzerinde ...
Doğrulamak birden çok sütun benzersiz ...