2016-05-20 1 views
0

Вопрос a: Есть ли абсолютная гарантия того, что объект, успешно полученный из NDB, не будет содержать ключ со значением None или key.id() со значением None? Эта гарантия написана где угодно в документах?Несколько вопросов о ключах NDB

Вопрос b: Клавиши хранят идентификатор как str/int? Или ключи хранят идентификатор в хеше, который должен быть расшифрован с помощью key.id()? Если есть, переходите к вопросу c.

Вопрос c: Является ли количество символов в ключевом хеше ограниченным или установленное количество? Если да, переходите к вопросу d.

Вопрос d: При попытке создать ключ конструктор ограничивает str len своего идентификатора при попытке создать ключ? Если нет, переходите к вопросу e.

Вопрос e: Если я создаю ключ с идентификатором str len, равным len ключа hash + 1, как ключ может decrypyt и получить идентификатор с id(), если диапазон значений, который может иметь хеш, меньше диапазона значений str id, которые я предоставляю?

Спасибо за ваше время!

ответ

1

Ответ: Если вы когда-либо извлекали объект с ключом (или идентификатором) Null, это указывало бы на гораздо большую проблему с NDB. Насколько я знаю, это невозможно, потому что каждому объекту нужен ключ. Нет, нет «гарантии» этого, кроме source code.

Ответ б: Основные магазины ид как ул/Int, как показано на source code:

def id(self): 
    """Return the string or integer id in the last (kind, id) pair, if any. 
    Returns: 
     A string or integer id, or None if the key is incomplete. 
    """ 
    return self.__pairs[-1][1] 

Поскольку он не использует хэш, я не приступал ответы с, d и е ,

Смежные вопросы