'da bileşik birincil anahtar nasıl tanımlanır SQLAlchemy'i birleşik bir birincil anahtarla bir tablo için bir tablo eşlemesi oluşturmak için SQLSlchemy ile kullanmaya çalışıyorum ve doğru yaptığımdan emin değilim. Mevcut tablo, bileşik birincil anahtarla tanımlanır. Bunu eklersek bu veritabanından a = tablo1 ('Test', 'Test', 'test')SQLAlchemy
zaten bir rekor maçları
class table1(Base):
__tablename__ = 'table1'
col1 = Column(String, primary_key=True)
col2 = Column(String, primary_key=True)
col3 = Column(String)
def __init__ = (self, col1, col2, col3):
self.col1 = col1
self.col2 = col2
self.col3 = col3
: Burada
haritalama sınıf tanımı var oturuma ve kayıtları tabloya ekledikten sonra verilerle çalışarak bir MySQL hatası alıyorum (1062 Duplicate Entry).session.add(a)
b = session.query(table1)
for instance in b:
print(instance.col1, instance.col2)
Ben tek tuşlu masaya ile çalışıyorum, ben onun yerine bu hatayı alıyorum:
New instance <table2 at 0x2f204d0> with identity key
(<class '__main__.table2'>,('test',)) conflicts with
persistent instance <table2 at 0x2f88770>
ben yanlış kompozit birincil anahtar tanımlama muyum? Değilse, bir Python/SQLAlchemy hatası yerine MySQL hatasını almam için neyi yanlış yapıyorum?
Gerçekten emin değilim, yaptığınız şeyi alıyorum. Değer zaten varsa, bunun için sorgulamanız gerekir, yeni bir tane oluşturmayın: 'a = session.query (table1) .filter (table1.col1 == 'test'). Filter (table1.col2 == 'test ') .one()'. Bu size * açık değilse * o zaman belgelere verilen dersleri almanızı şiddetle tavsiye ederim. Sorunuz hakkında yanılıyorsam, lütfen ayrıntılandırın. – javex
sqlalchemy hangi sürümünü kullanıyorsunuz? –
Neler olup bittiği hakkında yeterli bilgi yok. [Minimal, Tam ve Doğrulanabilir bir örnek nasıl oluşturulur?] (Http://stackoverflow.com/help/mcve) Hem kompozit hem de bileşik olmayan anahtarlarda, anahtar subrow değerine sahip bir satır eklemeyi denediğiniz görülüyor. Bu zaten bir tabloda yer almaktadır, ancak anahtar beyanı, belirli bir anahtar alt değer değerinin yalnızca bir tabloda bir kez görülebildiğini, dolayısıyla hata mesajlarının göründüğünü belirtmektedir. Yazdığım gibi, bu sorunun TerrenceBrannon'dan, kendi durumlarından yeterli ayrıntılar verebilmeleri için yeni bir soru yayınlamaktan daha iyi olabilecek bir lütuf vardır. – philipxy