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
所以第二种形式给出了正确的结果,但第一种形式没有。这似乎发生在 SQLite 但不是 Postgres。我有一个函数,它传递一个查询对象以distinct
应用一个子句,因此使用上面的第二种方法重写所有内容将非常困难。我有什么明显的遗漏吗?