Tôi không có nhiều kinh nghiệm với SQLAlchemy và một vấn đề, mà tôi không thể giải quyết nhưng tìm kiếm một cố gắng rất nhiều mã. Đây là lớp của tôi (giảm xuống mã quan trọng nhất):SqlAlchemy - Lọc theo mối quan hệ Thuộc tính
class Patient(Base):
__tablename__ = 'patients'
id = Column(Integer, primary_key=True, nullable=False)
mother_id = Column(Integer, ForeignKey('patients.id'), index=True)
mother = relationship('Patient', primaryjoin='Patient.id==Patient.mother_id', remote_side='Patient.id', uselist=False)
phenoscore = Column(Float)
và tôi muốn truy vấn tất cả bệnh nhân, có mẹ của phenoscore là (ví dụ) == 10
Như đã nói, tôi đã cố gắng rất nhiều mã, nhưng tôi không hiểu. Giải pháp hợp lý, trong mắt tôi, sẽ là
patients = Patient.query.filter(Patient.mother.phenoscore == 10)
bởi vì, bạn có thể truy cập .mother.phenoscore cho mỗi phần tử khi xuất, nhưng mã này không thực hiện. Có khả năng (trực tiếp) để lọc theo thuộc tính của một mối quan hệ (mà không cần viết câu lệnh SQL, hoặc thêm câu lệnh nối), tôi cần loại bộ lọc này nhiều hơn một lần.
Thậm chí nếu không có giải pháp dễ dàng, tôi hài lòng về tất cả các câu trả lời
thanks a lot Christo
bệnh nhân = Patient.query.filter (Patient.mother.has (Patient.phenoscore == 1 0)) – user1105851
@ user1105851 'has()' hỗ trợ cả biểu thức điều kiện dưới dạng đối số chưa đặt tên và đối số từ khóa 'filter_by'. Sau này có vẻ dễ đọc hơn với tôi. –
@DenisOtkidach đúng, nhưng sau đó nó sẽ là 'phenoscore = 10'. 'filter_by' chỉ lấy từ khóa bình đẳng (vì nó chỉ thực hiện ** kwargs trên chúng) – aruisdante