Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao tôi không thể tạo truy vấn bằng các mối quan hệ?

Các lớp ORM của bạn trông ổn. Đó là truy vấn không chính xác.

Tóm lại, bạn đang gặp lỗi "InstrumentedAttribute" vì bạn đang sử dụng sai session.query phương pháp.

Từ tài liệu session.query phương thức nhận dưới dạng đối số, "SomeMappedClass" hoặc "thực thể". Bạn đã xác định 2 lớp được ánh xạ, TournamentTournamentMaster . Những "thực thể" này thường là các lớp được ánh xạ của bạn (đối tượng ORM) hoặc một Cột của các lớp được ánh xạ này.

Tuy nhiên, bạn đang vượt qua trong Tournament.tournament_master.id_ không phải là "MappedClass" hoặc một cột và do đó không phải là "thực thể" session.query có thể tiêu thụ.

Một cách khác để xem xét nó là bằng cách gọi Tournament.tournament_master.id_ bạn đang cố gắng truy cập bản ghi (hoặc bản sao) 'TournamentMaster' từ lớp 'Tournament', điều này không hợp lý.

Tôi không quá rõ ràng chính xác bạn hy vọng sẽ trả lại điều gì từ truy vấn. Trong mọi trường hợp, đây là bước khởi đầu.

Thay vì

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

thử

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

Điều này cũng có thể hoạt động (chưa được kiểm tra) để chỉ trả về trường id_, nếu đó là ý định của bạn

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. Truy vấn LIKE trong MySQL với dấu gạch dưới

  2. Làm thế nào để CHỌN trên hai bảng?

  3. Giải pháp cho phạm vi TIMESTAMP giới hạn của MySQL?

  4. Làm cách nào để xem giá trị cụ thể của sql_mode?

  5. Loại bỏ các chữ số không phải alphaN trong MySQL