Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengapa saya tidak dapat membuat kueri menggunakan hubungan?

Kelas ORM Anda terlihat baik-baik saja. Ini adalah kueri yang salah.

Singkatnya, Anda mendapatkan kesalahan "InstrumentedAttribute" karena Anda menyalahgunakan session.query metode.

Dari dokumen session.query metode mengambil sebagai argumen, "SomeMappedClass" atau "entitas". Anda memiliki 2 kelas yang dipetakan, Tournament , dan TournamentMaster . "Entitas" ini biasanya berupa kelas yang dipetakan (objek ORM) atau Kolom dari kelas yang dipetakan ini.

Namun Anda melewati Tournament.tournament_master.id_ yang bukan "MappedClass" atau kolom dan dengan demikian bukan "entitas" yang session.query dapat dikonsumsi.

Cara lain untuk melihatnya adalah dengan memanggil Tournament.tournament_master.id_ Anda mencoba mengakses catatan 'TournamentMaster' (atau instance) dari kelas 'Tournament', yang tidak masuk akal.

Tidak terlalu jelas bagi saya apa sebenarnya yang Anda harapkan untuk dikembalikan dari kueri. Bagaimanapun, ini adalah permulaan.

Alih-alih

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

coba

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

Ini mungkin juga berfungsi (belum diuji) untuk hanya mengembalikan bidang id_, jika itu yang Anda inginkan

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 - JELASKAN PILIH dari TAMPILAN mencari di semua baris tabel utama

  2. MySQL:Dapatkan hasil pengembalian dari INSERT SELECT

  3. Bagaimana cara menyalin file data csv ke Amazon RedShift?

  4. Menggunakan Python dan MySQL dalam Proses ETL:Menggunakan Python dan SQLAlchemy

  5. MySQL menemukan akhir pekan pertama yang tersedia