Вашите ORM класове изглеждат добре. Заявката е неправилна.
Накратко, получавате тази грешка "InstrumentedAttribute", защото злоупотребявате с session.query
метод.
От документите
session.query
методът приема като аргументи "SomeMappedClass" или "entities". Имате дефинирани 2 картографирани класа, Tournament
и TournamentMaster
. Тези „обекти“ обикновено са или вашите съпоставени класове (ORM обекти) или колона от тези съпоставени класове.
Въпреки това преминавате в Tournament.tournament_master.id_
което не е "MappedClass" или колона и следователно не е "обект", който session.query
може да консумира.
Друг начин да го погледнете е като извикате Tournament.tournament_master.id_
опитвате се да получите достъп до запис (или екземпляр) 'TournamentMaster' от класа 'Tournament', което няма смисъл.
Не ми е супер ясно какво точно се надявате да върнете от заявката. Във всеки случай обаче ето начало.
Вместо
qry = session.query(Tournament.tournament_master.id_).limit(100)
опитайте
qry = session.query(Tournament, TournamentMaster).join(TournamentMaster).limit(100)
Това може също да работи (не е тествано), за да върне само полето id_, ако това е вашето намерение
qry = session.query(Tournament, TournamentMaster).join(Tournament).with_entities(TournamentMaster.id_).limit(100)