sql >> Databasteknik >  >> RDS >> Mysql

Varför kan jag inte skapa en fråga med hjälp av relationer?

Dina ORM-klasser ser bra ut. Det är frågan som är felaktig.

Kort sagt, du får det här "InstrumentedAttribute"-felet eftersom du missbrukar session.query metod.

Från dokumenten session.query metoden tar som argument "SomeMappedClass" eller "entities". Du har 2 mappade klasser definierade, Tournament , och TournamentMaster . Dessa "entiteter" är vanligtvis antingen dina mappade klasser (ORM-objekt) eller en kolumn av dessa mappade klasser.

Men du passerar Tournament.tournament_master.id_ som inte är en "MappedClass" eller en kolumn och alltså inte en "entitet" som session.query kan konsumera.

Ett annat sätt att se på det är att anropa Tournament.tournament_master.id_ du försöker komma åt en 'TournamentMaster'-post (eller instans) från 'Tournament'-klassen, vilket inte är vettigt.

Det är inte superklart för mig exakt vad du hoppas få tillbaka från frågan. I alla fall men här är en början.

Istället för

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

försök

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

Detta kan också fungera (inte testat) för att bara returnera id_-fältet, om det är din avsikt

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



  1. Taggningssystem:Toxilösningsfrågor

  2. Producera DISTINCT-värden i STRING_AGG

  3. Importera ett MySQL-schema till Xcode som en CoreData-datamodell

  4. Hur skapar jag en främmande nyckel i SQL Server?