SQLAlchemy のQuery.distinctメソッドの動作に一貫性がありません。
>>> [tag.name for tag in session.query(Tag).all()]
[u'Male', u'Male', u'Ninja', u'Pirate']
>>> session.query(Tag).distinct(Tag.name).count()
4
>>> session.query(Tag.name).distinct().count()
3
したがって、2 番目の形式では正しい結果が得られますが、最初の形式では得られません。これは SQLite では発生するようですが、Postgres では発生しません。クエリ オブジェクトを渡してdistinct
句を適用する関数があるため、上記の 2 番目の方法を使用してすべてを書き直すことは非常に困難です。私が行方不明であることは明らかですか?