Mysql
 sql >> Database >  >> RDS >> Mysql

Perché non riesco a generare una query utilizzando le relazioni?

Le tue lezioni ORM sembrano a posto. È la query che non è corretta.

In breve, ricevi quell'errore "InstrumentedAttribute" perché stai usando in modo improprio session.query metodo.

Dai documenti il session.query il metodo accetta come argomenti "SomeMappedClass" o "entities". Hai 2 classi mappate definite, Tournament e TournamentMaster . Queste "entità" sono in genere le tue classi mappate (oggetti ORM) o una colonna di queste classi mappate.

Comunque stai passando Tournament.tournament_master.id_ che non è una "MappedClass" o una colonna e quindi non un'"entità" che session.query può consumare.

Un altro modo per vederlo è chiamando Tournament.tournament_master.id_ stai tentando di accedere a un record (o istanza) "TournamentMaster" dalla classe "Torneo", il che non ha senso.

Non è molto chiaro per me cosa esattamente speri di restituire dalla query. In ogni caso però ecco un inizio.

Invece di

qry = session.query(Tournament.tournament_master.id_).limit(100)

prova

qry = session.query(Tournament, TournamentMaster).join(TournamentMaster).limit(100)

Questo potrebbe anche funzionare (non testato) per restituire solo il campo id_, se questa è la tua intenzione

qry = session.query(Tournament, TournamentMaster).join(Tournament).with_entities(TournamentMaster.id_).limit(100)