与 Peewee 我尝试使用限制如下:
one_ticket = Ticket.select().limit(1)
print one_ticket.count()
但是这会打印出 5。有人知道这里出了什么问题吗?
尝试在
调试模式下运行
peewee
,这实际上只是设置pythonlogging
模块来处理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()
理想情况下,您应该看到原始查询。
这是一个非常老的问题 - 几年前就已修复。
count()
方法现在会考虑应用的任何限制或排序。
但是这会打印出 5。有人知道这里出了什么问题吗?
要获取 LIMIT 查询的结果数,您可以将迭代器传递给
len()
,如 len(one_ticket)
。
问题在于
.limit(1)
和 .count()
发出两个不同的 SQL 查询,并且 COUNT
通常比使用 LIMIT 1
对数据库进行查询要花费更多。
例如,如果您想知道查询中是否存在 some 或 more 结果,这非常有用。 Django 的 ORM QuerySet 方法
.exists()
使用 LIMIT 2
而不是 COUNT
查询整行,因为 COUNT
比 LIMIT 2
对数据库的影响更大