如何使用peewee limit()?

问题描述 投票:0回答:3

Peewee 我尝试使用限制如下:

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

但是这会打印出 5。有人知道这里出了什么问题吗?

python sql orm limit peewee
3个回答
2
投票

尝试在

调试模式
下运行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()

理想情况下,您应该看到原始查询。


0
投票

这是一个非常老的问题 - 几年前就已修复。

count()
方法现在会考虑应用的任何限制或排序。


-1
投票

但是这会打印出 5。有人知道这里出了什么问题吗?

要获取 LIMIT 查询的结果数,您可以将迭代器传递给

len()
,如
len(one_ticket)

问题在于

.limit(1)
.count()
发出两个不同的 SQL 查询,并且
COUNT
通常比使用
LIMIT 1
对数据库进行查询要花费更多。

例如,如果您想知道查询中是否存在 somemore 结果,这非常有用。 Django 的 ORM QuerySet 方法

.exists()
使用
LIMIT 2
而不是
COUNT
查询整行,因为
COUNT
LIMIT 2

对数据库的影响更大
© www.soinside.com 2019 - 2024. All rights reserved.