11
Sto provando a creare una relazione che si estende su 3 tabelle ma non riesco a capire la sintassi.Relazioni SQLAlchemy su più tabelle
Ho 3 tabelle TableA
, TableB
e TableC
e il rapporto che sto cercando di modello è:
TableA.my_relationship = relationship(
'TableC',
primaryjoin='and_(TableA.fk == TableB.pk, TableB.fk == TableC.pk)',
viewonly=True
)
in modo che su un'istanza di TableA
posso fare instance_of_a.my_relationship
per vedere la scheda TableC
che è indirettamente associata con instance_of_a
Un metodo di definizione delle relazioni preferito dall'altra per qualsiasi motivo? Il riferimento esplicito di 'secondary' nel metodo two sembra intuitivo rispetto al complesso' primaryjoin' str nel metodo uno ... ma il metodo uno sembra che potrebbe essere più potente. – Russ
questo è un po 'strano, quindi per quanto secondario, non è così che "secondario" era inteso per essere usato originariamente, ad es. si aspetta che i FK siano tutti nel mezzo. Non sono sicuro che quella relazione "Secondaria" riuscirà effettivamente a persistere correttamente, ad es. potrebbe essere necessario essere visibile = Vero anche. L'ORM farà anche diverse scelte quando costruisce cose come carichi desiderosi e, a tale riguardo, la versione "secondaria" può prendere decisioni migliori poiché sa che c'è una tabella aggiuntiva nella clausola FROM. – zzzeek
confermato, unito a carico caricamento funziona solo con il secondo, il primo non riesce a creare correttamente il file – zzzeek