0

Я использую Google App Engine с бэкэндом ndb, и я хочу получить одно значение ex: int из объекта ndb, после любого запроса я получаю весь объект с проекцией, в моем случае у меня есть сущность транзакций и я хотите суммировать свойства суммы.Как получить одно значение из запроса gae ndb?

Что я использую сейчас список понимание на запрос результат, как:

query = ndb.gql("select amount from Transactions").fetch() 
result = sum([x.amount for x in query]) 

Есть ли способ сделать Ndb запрос возвращает список только суммы, поэтому, я могу суммировать результат запроса непосредственно как:

query = ndb.gql("select amount from Transactions").fetch() 
result = sum(query) 

заранее спасибо

+0

Это не возможно – Greg

+0

даже не более простой способ, чем у меня? Я имею в виду, что, если у меня есть сотни этого сущности, что делать?! –

+0

Просто примечание 'query' в вашем коде выше является фактически списком сущностей, а не объектом запроса. Таким образом, вы могли бы уменьшить приведенное выше значение 'result = reduce (lambda x, y: x + y, map (lambda x: x.amount, Transactions.query(). Fetch ( projection = [Transactions.amount,]))) 'хотя и гораздо менее читаемым, чем пример ниже. –

ответ

1

Там нет прямого способа получить список значений из проекции выборки (я предполагаю, что вы ищете Ndb аналог Джанго ОРМА TRANSACTI ons.query() все() значения()), вы можете сделать следующее:..

result = sum([x.amount for x in Transactions.query().fetch(
    projection=[Transactions.amount,])]) 

https://cloud.google.com/appengine/docs/python/ndb/projectionqueries

Смежные вопросы