2012-01-23 20 views

cevap

11

SQLAlchemy çekirdek birincil anahtar eksik hakkında şikayet etmiyor, bu nedenle Table(…) böyle bir tablo oluşturmak mümkündür. Ancak, ORM, tasarıma karşılık gelen satırı tanımlamanın bir yolunu gerektirir, bu nedenle ORM'de birincil anahtar olmadan tablo kullanmak mümkün değildir.

Neden daha sonra bu dizini eklemem gerekir mi? Gerçek bir gereksinim mi yoksa muhtemelen başka bir şekilde çözülebilecek bir soruna çözüm bulmak mı? Kompozit birincil anahtara ihtiyacınız durumda, bu Column birkaç s veya __table_args__ yılında PrimaryKeyConstraint(…) belirterek primary_key=True argüman ya onu tanımlamak mümkündür.

+0

Çok sütunlu bir dizin oluşturmayı planlıyorum. Ve eğer index'in BTREE (mySQL benim veritabanım) kullanılarak yapılması gerektiğini açıkça ilan edersem harika olurdu. Herhangi bir çözüm? – Determinant

+1

Çoğu veritabanında (MySQL dahil) varsayılan olarak B-Tree kullanılır, bu yüzden bileşik indeksine katılan tüm 'Column'larda' primary_key = True' belirtilmelidir. Açık B-Ağacı (veya başka bir tür) belirtimi, "Dizin (…)" örneğinde desteklenir. PostgreSQL için, ancak MySQL için değil, "PrimaryKeyConstraint" için değil. SQLAlchemy'de eksik özellik gibi görünüyor. –

+6

ayrıca bildirime ile) (mapper için "primary_key" argüman "birincil" dir sütunların listesini koyabilirsiniz '__mapper_args__ = { "primary_key" :(col1, col2)}} yanlış' – zzzeek

İlgili konular