Как декодировать ул. пути Ключа объекта Google App Engine в Python?

В Google App Engine объект имеет Ключ. Ключ может быть сделан из пути, в этом случае ул. (ключ) является непрозрачной шестнадцатеричной строкой. Пример:

from google.appengine.ext import db
foo = db.Key.from_path(u'foo', u'bar', _app=u'baz')
print foo

дает

agNiYXpyDAsSA2ZvbyIDYmFyDA

если Вы создаете правильные пути для выполнения кода.

Так, как можно взять шестнадцатеричную строку и вернуть путь? Я думал, что ответ будет в документах группы Ключа или объекта, но я не вижу его.

6
задан dfrankow 30 June 2010 в 16:34
поделиться

2 ответа

from google.appengine.ext import db

k = db.Key('agNiYXpyDAsSA2ZvbyIDYmFyDA')
_app = k.app()
path = []
while k is not None:
  path.append(k.id_or_name())
  path.append(k.kind())
  k = k.parent()
path.reverse()
print 'app=%r, path=%r' % (_app, path)

при запуске в консоли разработки выводится:

app=u'baz', path=[u'foo', u'bar']

по запросу. Более короткая альтернатива - использовать (к сожалению, я считаю, недокументированный) метод to_path из экземпляров Key :

k = db.Key('agNiYXpyDAsSA2ZvbyIDYmFyDA')
_app = k.app()
path = k.to_path()
print 'app=%r, path=%r' % (_app, path)

с теми же результатами. Но первая, более длинная версия опирается только на документированные методы.

7
ответ дан 10 December 2019 в 02:42
поделиться

Когда у вас есть объект Key (который можно создать, передав этот непрозрачный идентификатор конструктору), используйте Key.to_path () , чтобы получить путь к ключу в виде списка. Например:

from google.appengine.ext import db
opaque_id = 'agNiYXpyDAsSA2ZvbyIDYmFyDA'
path = db.Key(opaque_id).to_path()
2
ответ дан 10 December 2019 в 02:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: