Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо не мога да генерирам заявка с помощта на връзки?

Вашите 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)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. преобразуване на низ от дата в поле за дата и час на mysql

  2. Мога ли да използвам COUNT() и DISTINCT заедно?

  3. Google App Engine и Cloud SQL:Загубена връзка с MySQL сървър при „четене на първоначален комуникационен пакет“

  4. Къде да добавите jdbc драйвера на Netbeans/Glassfish в Windows?

  5. Проверете грешките в заявката на codeigniter, вместо да ги показвате на потребителя