Je ORM-lessen zien er goed uit. Het is de zoekopdracht die onjuist is.
Kortom, u krijgt die "InstrumentedAttribute"-foutmelding omdat u de session.query
misbruikt methode.
Uit de documenten
de session.query
methode neemt als argumenten "SomeMappedClass" of "entities". Je hebt 2 toegewezen klassen gedefinieerd, Tournament
, en TournamentMaster
. Deze "entiteiten" zijn meestal uw toegewezen klassen (ORM-objecten) of een kolom van deze toegewezen klassen.
Je past echter in Tournament.tournament_master.id_
wat geen "MappedClass" of kolom is en dus geen "entiteit" die session.query
kan consumeren.
Een andere manier om ernaar te kijken is door Tournament.tournament_master.id_
te bellen je probeert toegang te krijgen tot een 'TournamentMaster'-record (of instantie) uit de 'Tournament'-klasse, wat niet logisch is.
Het is me niet helemaal duidelijk wat je precies hoopt te bereiken met de vraag. Hier is in ieder geval een begin.
In plaats van
qry = session.query(Tournament.tournament_master.id_).limit(100)
probeer
qry = session.query(Tournament, TournamentMaster).join(TournamentMaster).limit(100)
Dit kan ook werken (niet getest) om alleen het veld id_ terug te geven, als dat je bedoeling is
qry = session.query(Tournament, TournamentMaster).join(Tournament).with_entities(TournamentMaster.id_).limit(100)