Как получить все объекты в хранилище данных движка приложений?

в http://code.google.com/appengine/docs/python/datastore/entities.html#Saving_Getting_and_Deleting_Entities

пакетная операция для получения объекта изложена ниже:

Партия получается. entity = db.get ([k1, k2, k3])

Как я могу получить все объекты без предоставления ключей?


person Lynard    schedule 07.02.2011    source источник


Ответы (2)


У меня есть решение по этому поводу, и его можно найти в Запросы к хранилищу данных - Интерфейс запросов пример:

Query q = new Query("Person") 
        PreparedQuery pq = datastore.prepare(q);  
    for (Entity result : pq.asIterable()) {   
       String firstName = (String) result.getProperty("firstName");   
       String lastName = (String) result.getProperty("lastName");   
       Long height = (Long) result.getProperty("height");   
       System.out.println(lastName + " " + firstName + ", " + height.toString() + "inches tall"); 
}

Я не добавлял фильтр в запрос, так как он возвращает все сущности из хранилища данных.

person Lynard    schedule 09.02.2011

Это было легко сделать, используя gql с условием это всегда верно, и получите результаты. Например. если у вашей сущности есть строковое поле с именем StringKey, вы можете сделать:

entities = db.gql("WHERE StringKey >''").fetch(1000)

Обратите внимание, что получение более 1000 объектов возможно, но не просто в GAE, см. это обсуждение.

person Gergely Orosz    schedule 07.02.2011