sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor kan jeg ikke generere en forespørgsel ved hjælp af relationer?

Dine ORM-timer ser fine ud. Det er forespørgslen, der er forkert.

Kort sagt får du fejlen "InstrumentedAttribute", fordi du misbruger session.query metode.

Fra dokumenterne session.query metoden tager "SomeMappedClass" eller "entities" som argumenter. Du har defineret 2 kortlagte klasser, Tournament , og TournamentMaster . Disse "entiteter" er typisk enten dine tilknyttede klasser (ORM-objekter) eller en kolonne af disse tilknyttede klasser.

Men du passerer Tournament.tournament_master.id_ som ikke er en "MappedClass" eller en kolonne og dermed ikke en "entity", der session.query kan forbruge.

En anden måde at se det på er ved at kalde Tournament.tournament_master.id_ du forsøger at få adgang til en 'TournamentMaster'-record (eller instans) fra 'Tournament'-klassen, hvilket ikke giver mening.

Det er ikke helt klart for mig, hvad du præcist håber på at vende tilbage fra forespørgslen. Under alle omstændigheder, men her er en start.

I stedet for

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

prøv

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

Dette kan også virke (ikke testet) til kun at returnere id_-feltet, hvis det er din hensigt

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



  1. DATEPART() Eksempler i SQL Server

  2. Bekræft databaseforbindelsen med pg-promise, når du starter en app

  3. Vil du oprette forbindelse til web-service/API i MySQL?

  4. Oracle PL/SQL-masseindsamling med Gem undtagelser Eksempel