Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego nie mogę wygenerować zapytania przy użyciu relacji?

Twoje zajęcia ORM wyglądają dobrze. To zapytanie jest nieprawidłowe.

Krótko mówiąc, otrzymujesz błąd „InstrumentedAttribute”, ponieważ niewłaściwie używasz session.query metoda.

Z dokumentów session.query Metoda przyjmuje jako argumenty „SomeMappedClass” lub „entities”. Masz zdefiniowane 2 zmapowane klasy, Tournament i TournamentMaster . Te „elementy” to zazwyczaj albo Twoje zmapowane klasy (obiekty ORM) albo Kolumna tych zmapowanych klas.

Jednak przechodzisz w Tournament.tournament_master.id_ która nie jest „MappedClass” ani kolumną, a zatem nie „jednostką”, która session.query może konsumować.

Innym sposobem, aby na to spojrzeć, jest wywołanie Tournament.tournament_master.id_ próbujesz uzyskać dostęp do rekordu „TournamentMaster” (lub instancji) z klasy „Tournament”, co nie ma sensu.

Nie jest dla mnie zbyt jasne, co konkretnie masz nadzieję zwrócić z zapytania. W każdym razie jednak tutaj jest początek.

Zamiast

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

spróbuj

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

Może to również działać (nie testowano), aby zwrócić tylko pole id_, jeśli masz taki zamiar

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. Jak korzystać z JDBC do łączenia bazy danych MySql

  2. Połączenie wewnętrzne 2 tabel o tym samym identyfikatorze

  3. wstawiaj dane z jednej tabeli do drugiej w mysql

  4. Najszybszy sposób na załadowanie danych liczbowych do tablicy python/pandas/numpy z MySQL

  5. Jak uzyskać nowy balans biegowy z istniejącego balansu?