クエリのパフォーマンスが向上するようにしようとしていますが、生成されたクエリが期待通りに見えません。ジョインテーブルによるフィルタリング
結果を使用して取得されています
query = session.query(SomeModel).
options(joinedload_all('foo.bar')).
options(joinedload_all('foo.baz')).
options(joinedload('quux.other'))
私は何をしたいことは、テーブル上のフィルタは「最初の」を介して結合されているが、この方法では動作しません:
query = query.filter(FooModel.address == '1.2.3.4')
それは結果クエリに添付されたこの節の中で:
WHERE foos.address = '1.2.3.4'
生成されたjオインズはテーブルfoos_1
とfoos_2
を添付します。このクエリを手動で試しても、フィルタリング句を次のように変更した場合:
WHERE foos_1.address = '1.2.3.4' AND foos_2.address = '1.2.3.4'
正常に動作します。質問はもちろんです - どうすればsqlalchemy自体でこれを達成できますか?
? 0.7.4では、 'Foo'は一度だけ結合されます。 – van