SQLAlchemyにはあまり経験はありません。問題は解決できませんが、多くのコードを検索しています。 これは私のクラスである(最も重要なコードに縮小):SqlAlchemy - リレーションシップ属性によるフィルタリング
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
すべての患者を、照会したいと思い、私が試しました多くのコードが、私はそれを得ることはありません。論理的ソリューションは、私の目には、このコードはそれをしない、出力する際には、各要素に対して.mother.phenoscoreにアクセスすることができ、ため
patients = Patient.query.filter(Patient.mother.phenoscore == 10)
ことだろうが。 リレーションシップの属性(SQLステートメントを書くことなく、または余分なjoinステートメントなし)でフィルタリングする(直接的に)可能性がありますが、この種のフィルタが必要です。
簡単な解決策が存在しない場合でも、私はすべての答えについて幸せです
おかげでたくさん クリスト
患者= Patient.query.filter(Patient.mother.has(Patient.phenoscore == 1を働くだろう0)) – user1105851
@ user1105851 'has()'は、無名引数として条件式と 'filter_by'-styleキーワード引数の両方をサポートします。後で私にはより読みやすいようです。 –
@DenisOtkidachは正しいが、それは 'phenoscore = 10'となる。 'filter_by'は等価のキーワードしか取っていません(それで** kwargsを実行しているので) – aruisdante