Я только что заметил странный результат запроса, который мне трудно понять. Похоже, что добавление order () к запросу ограничивает результаты, которые я получаю.
Вот мое взаимодействие:
>>> SomeModel.all().filter('action =', 'foo').order('created_at').count(),
SomeModel.all().filter('action =', 'foo').count()
(192L, 293L)
>>> SomeModel.all().filter('action =', 'foo').order('created_at').count(),
SomeModel.all().filter('action =', 'foo').count()
(193L, 294L)
Как видите, между двумя запросами не было добавлено сотни сущностей. Похоже, что инструкция order () ограничивает набор результатов. Но created_at
является обязательным свойством и присутствует во всех сущностях.
>>> count = 0
>>> for entity in SomeModel.all().filter('action =', 'foo'):
... if not entity.created_at:
... raise Exception, 'Not found!'
... count += 1
...
>>> print count
361
Без исключений. Так почему же запрос с ЗАКАЗОМ не возвращает все сущности?
Наконец, выясняем, являются ли данные плохими:
>>> print "ascending=%d no-filter=%d descending=%d" % (
SomeModel.all().filter('action =', 'foo').order('created_at').count(),
SomeModel.all().filter('action =', 'foo').count(),
SomeModel.all().filter('action =', 'foo').order('-created_at').count())
ascending=79 no-filter=179 descending=173