sql >> Database >  >> RDS >> Mysql

Waarom kan ik geen query genereren met relaties?

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)



  1. PostgreSQL breedtegraad lengtegraad query

  2. Gegevens plus indexgegevens in het geheugen bewaren - InnoDB vs. MyISAM

  3. CodeIgniter MSSQL-verbinding

  4. bereken een gemiddelde zonder decimalen