Получить список результатов запроса в Peewee

Подумываю о переходе с SQLAlchemy на peewee, но у меня есть фундаментальный вопрос, так как я не могу найти пример этого. Я хочу выполнить запрос, который возвращает список совпадающих объектов. Что работает, так это get, который возвращает одну запись:

Topping.select().where(Topping.id==jalapenos.id).get()

Я хочу получить список результатов, для которых во всех примерах указано, что я должен выполнить итерацию. Есть ли способ получить список результатов из:

Topping.select(Topping).where(Topping.stock > 0)

person valanto    schedule 04.08.2017    source источник


Ответы (1)


Запрос 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)
person wyattis    schedule 16.08.2017