Twoje zajęcia ORM wyglądają dobrze. To zapytanie jest nieprawidłowe.
Krótko mówiąc, otrzymujesz błąd „InstrumentedAttribute”, ponieważ niewłaściwie używasz session.query metoda.
Z dokumentów
session.query Metoda przyjmuje jako argumenty „SomeMappedClass” lub „entities”. Masz zdefiniowane 2 zmapowane klasy, Tournament i TournamentMaster . Te „elementy” to zazwyczaj albo Twoje zmapowane klasy (obiekty ORM) albo Kolumna tych zmapowanych klas.
Jednak przechodzisz w Tournament.tournament_master.id_ która nie jest „MappedClass” ani kolumną, a zatem nie „jednostką”, która session.query może konsumować.
Innym sposobem, aby na to spojrzeć, jest wywołanie Tournament.tournament_master.id_ próbujesz uzyskać dostęp do rekordu „TournamentMaster” (lub instancji) z klasy „Tournament”, co nie ma sensu.
Nie jest dla mnie zbyt jasne, co konkretnie masz nadzieję zwrócić z zapytania. W każdym razie jednak tutaj jest początek.
Zamiast
qry = session.query(Tournament.tournament_master.id_).limit(100)
spróbuj
qry = session.query(Tournament, TournamentMaster).join(TournamentMaster).limit(100)
Może to również działać (nie testowano), aby zwrócić tylko pole id_, jeśli masz taki zamiar
qry = session.query(Tournament, TournamentMaster).join(Tournament).with_entities(TournamentMaster.id_).limit(100)