Запрос только по ключам дает вам ключи, а не сущность, которая имеет свойства. В первом примере p
не будет иметь .name
. Кроме того, порядок ключей неявный. Если вы хотите свойства от объекта, запрос только по ключу не то, что вы хотите; вам придется запросить объект. В настоящее время нет способа получить меньше, чем все свойства, поэтому учитывайте это при моделировании данных.
Вот третий вариант, который вы можете или не можете найти более читабельным. Он будет работать так же, как ваш второй фрагмент.
people = Person.gql("WHERE name=:1", person_name)
for person in people:
print person.name
Независимо от того, используете ли вы этот подход или ваш второй фрагмент, запрос непосредственно для сущностей будет быстрее, чем запрос их ключей, а затем выборка сущностей, соответствующих этим ключам.