0

Google 애플 리케이션 엔진을 ndb 백엔드와 함께 사용하고 있는데, 예 : ndb 엔티티에서 단일 값을 가져오고 싶습니다. 모든 쿼리를 수행 한 후 투영으로 전체 엔티티를 얻었습니다. 제 경우 엔 트랜잭션 엔티티가 있습니다. 금액 속성을 합산하려고합니다. 내가 직접 쿼리 결과를 요약 할 수gae ndb query에서 단일 값을 얻는 방법은 무엇입니까?

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

가져 투사의 값의 목록을 얻을 수있는 직접적인 방법 (난 당신이 장고 ORM Transacti의 NDB 아날로그 찾고있는 가정은 없다 ons.query() 모든() 값())는 다음과 같이, 당신이 할 수 있습니다..

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

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

관련 문제