获取Peewee中的查询结果列表

val*_*nto 2 python python-2.7 peewee

考虑从SQLAlchemy切换到peewee,但有一个基本问题,因为我无法找到这样的例子.我想执行一个返回匹配对象列表的查询.什么有效是获取哪个返回单个记录:

Topping.select().where(Topping.id==jalapenos.id).get()
Run Code Online (Sandbox Code Playgroud)

我想得到的是一个结果列表,所有示例都表明我应该迭代.有没有办法从以下结果中获取结果列表:

Topping.select(Topping).where(Topping.stock > 0)
Run Code Online (Sandbox Code Playgroud)

wya*_*tis 6

撒尿查询被懒惰地执行.我相信它返回一个迭代器,所以你需要告诉它你在查询实际执行之前尝试使用数据.这可以通过迭代查询或直接调用execute方法来实现.

强制查询立即执行:

results = Topping.select().execute()
Run Code Online (Sandbox Code Playgroud)

要将查询结果转换为列表:

query = Topping.select().where(Topping.stock > 0)
toppings = list(query)
# OR
toppings = [t for t in query]
Run Code Online (Sandbox Code Playgroud)

请注意,您可以通过以下方式大大简化查询以检索单个实体:

Topping.get(Topping.id==jalapenos.id)
Run Code Online (Sandbox Code Playgroud)