Как использовать peewee limit ()?

С Peewee я пытаюсь использовать лимит следующим образом:

one_ticket = Ticket.select().limit(1)
print one_ticket.count()

Однако это выводит 5. Кто-нибудь знает, что здесь не так?


person kramer65    schedule 19.11.2013    source источник


Ответы (1)


Попробуйте запустить peewee в режиме отладки, который на самом деле просто настраивает модуль python logging для обработки элементов уровня logging.DEBUG:

import logging
logging.basicConfig(
    format='[%(asctime)-15s] [%(name)s] %(levelname)s]: %(message)s',
    level=logging.DEBUG
)

# From here, you can now perform your query, and you should see peewee's debug output using the logging module.
one_ticket = Ticket.select().limit(1)
print one_ticket.count()

В идеале вы должны увидеть необработанный запрос.

person VooDooNOFX    schedule 19.11.2013
comment
Спасибо за чаевые. Необработанный запрос выглядит следующим образом: [2013-11-19 10:41:33,555] [peewee] DEBUG]: ('SELECT Count(t1."id") FROM "ticket" AS t1 LIMIT 1', []). Это все еще оставляет меня в неведении относительно того, почему счет равен 5. Любые идеи? - person kramer65; 19.11.2013
comment
Скорее всего, вам нужно использовать one_ticket.wrapped_count() вместо этого. Более прямой one_ticket.count() по умолчанию будет подсчитывать количество элементов из первичного ключа, как показано в источнике: github.com/coleifer/peewee/blob/master/peewee.py#L1653 - person VooDooNOFX; 19.11.2013
comment
К сожалению, wrap_count() также приводит к 5. Кроме того, было бы довольно странно, если метод count для результата запроса не подсчитывает результаты, а выполняет новый запрос. (Я очень ценю, что вы пытаетесь мне помочь! :)) У вас есть другие идеи? - person kramer65; 19.11.2013
comment
К сожалению, я потратил. Последняя идея, обновите peewee до последней версии с github и повторите попытку. Может это временная ошибка? - person VooDooNOFX; 20.11.2013
comment
@coleifer - я только что перечитывал эти вопросы и ответы и наткнулся на ваш комментарий. Можно спросить; почему крошка очищает границы при подсчете? Это кажется мне совершенно неинтуитивным поведением. - person kramer65; 12.02.2015