GQL получить поле идентификатора - PullRequest
3 голосов
/ 12 сентября 2009

В Google Appengine вы можете получить значение ключа хеша, выполнив запрос, подобный

select __key__ from furniture

Но хранилище данных appengine поддерживает автоматически автоинкрементный идентификатор поля для каждого вида.

Как я могу получить к нему доступ из запроса?

select ID from furniture

Не работает

Ответы [ 3 ]

5 голосов
/ 29 января 2012

Вы также можете попробовать

entity.key().id()
4 голосов
/ 12 сентября 2009

Я полагаю, что запрос Gcl не может включать в себя вызовы методов доступа или извлечение атрибута (во многом в том же духе, что и тот факт, что он может только "SELECT * FROM" извлекать целые объекты или "SELECT __key__ FROM" извлекать только ключи - он не может выбирайте поля, как в [гипотетически! -)] "SELECT this, that FROM ").

Итак, вам нужно выбрать ключи, а затем вызвать .id() аксессор каждого ключа (если вы хотите None для ключей, у которых нет идентификатора, а есть имя; используйте .id_or_name(), если хотите получить имя, если оно доступно, и None только в крайнем случае). Например, чтобы получить только идентификаторы, отличные от None:

thekeys = db.GqlQuery('SELECT __key__ FROM Whatever').fetch(1000)
theids = [k.id() for k in thekeys if k.id() is not None]
0 голосов
/ 29 июля 2013

Я не уверен, был ли он там тогда, когда вы задавали этот вопрос, но теперь довольно легко получить сущность по id.

YourModel.get_by_id (int(ids))

Подробнее об этом вы можете прочитать в документации: https://developers.google.com/appengine/docs/python/datastore/modelclass#Model_get_by_id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...