gpt4 book ai didi

python - SqlAlchemy - 按关系属性过滤

转载 作者:IT老高 更新时间:2023-10-28 21:31:35 25 4
gpt4 key购买 nike

我没有太多使用 SQLAlchemy 的经​​验,而且我遇到了一个无法解决的问题。我尝试搜索并尝试了很多代码。这是我的类(class)(简化为最重要的代码):

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)

我想查询所有患者,其母亲的 phenoscore 是(例如)== 10

如前所述,我尝试了很多代码,但我不明白。在我看来,合乎逻辑的解决方案是

patients = Patient.query.filter(Patient.mother.phenoscore == 10)

因为,您可以在输出时访问每个元素的 .mother.phenoscore,但是,此代码不会这样做。

是否有(直接)可能通过关系的属性进行过滤(无需编写 SQL 语句或额外的连接语句),我需要多次使用这种过滤器。

即使没有简单的解决方案,我也很高兴得到所有答案。

最佳答案

使用方法has()关系(更易读):

patients = Patient.query.filter(Patient.mother.has(phenoscore=10))

或加入(通常更快):

patients = Patient.query.join(Patient.mother, aliased=True)\
.filter_by(phenoscore=10)

关于python - SqlAlchemy - 按关系属性过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561470/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com