获取Peewee中查询结果的列表
问题描述:
考虑从SQLAlchemy切换到peewee,但有一个基本问题,因为我无法找到此示例。我想执行一个返回匹配对象列表的查询。什么工作是得到它返回一个记录:获取Peewee中查询结果的列表
Topping.select().where(Topping.id==jalapenos.id).get()
我想要得到的是结果,所有的例子表明,我要重复的列表。有没有办法从下面得到结果列表:
Topping.select(Topping).where(Topping.stock > 0)
答
peewee查询是懒惰执行的。我相信它会返回一个迭代器,所以你需要告诉它你试图在查询实际执行之前使用这些数据。这可以通过迭代查询或直接调用execute方法来实现。
要强制查询立即执行:
results = Topping.select().execute()
要查询结果转换到一个列表:
query = Topping.select().where(Topping.stock > 0)
toppings = list(query)
# OR
toppings = [t for t in query]
请注意,您可以大大简化您的查询检索单个实体附:
Topping.get(Topping.id==jalapenos.id)