sql >> Databáze >  >> RDS >> Mysql

Proč nemohu generovat dotaz pomocí vztahů?

Vaše třídy ORM vypadají dobře. Je to dotaz, který je nesprávný.

Stručně řečeno, dostáváte chybu "InstrumentedAttribute", protože nesprávně používáte session.query metoda.

Z dokumentů session.query metoda bere jako argumenty "SomeMappedClass" nebo "entity". Máte definované 2 mapované třídy, Tournament a TournamentMaster . Tyto "entity" jsou obvykle buď vaše namapované třídy (ORM objekty) nebo sloupec těchto mapovaných tříd.

Vy však předáváte v Tournament.tournament_master.id_ což není „MappedClass“ nebo sloupec, a tedy ani „entita“, která session.query může konzumovat.

Dalším způsobem, jak se na to podívat, je volání Tournament.tournament_master.id_ pokoušíte se o přístup k záznamu 'TournamentMaster' (nebo instanci) z třídy 'Tournament', což nedává smysl.

Není mi úplně jasné, co přesně doufáte, že se vrátíte z dotazu. V každém případě, tady je začátek.

Místo

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

zkuste

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

To může také fungovat (netestováno), že vrátí pouze pole id_, pokud je to vaším záměrem

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



  1. něco o ansi_nulls

  2. Nedokážu přijít na to, jak získat data z MySql Query

  3. Práce s Java daty v Qlik Sense

  4. Jak se připojit k tabulkám mysql