2013-12-08 1 views
0

Хотелось бы иметь get_multiNone для ключей с неверными идентификаторами.Есть ли способ игнорировать недопустимые ключи с get_multi?

class Entity(ndb.Model): 
    pass 

ids = [0, 1] 
rows = ndb.get_multi([Key(Entity, id) for id in ids]) 

Фактический результат

BadRequestError('missing key id/name')

Желаемый результат

[None, <Entity with id 1>]

Причина, почему я не называю filter на ids, что я хочу индексы ids соответствовать показателям в rows.

+0

Вы получите ошибку badrequest, если ключ недействителен, а не отсутствует. Как вы собираетесь обеспечить соответствие индексов, если вы не выделите идентификаторы –

+0

Если они отсутствуют ('None'), я получаю нулевой указатель, который по-прежнему является проблемой. Они всегда совпадают при использовании 'get_multi' и действительных ключей. –

+0

Если вы не получили None, вы не смогли бы определить, какие ключи не вернули значение. –

ответ

1

С get_multi является только вспомогательной функцией, мое лучшее решение до сих пор заключается в том, чтобы скопировать код и запустить запрос только в том случае, если id > 0.

ids = [0, 1] 
futures = [Key(Entity, id).get_async() if id > 0 else None for id in ids] 
rows = [future.get_result() if future else None for future in futures] 

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

  • Нет связанных вопросов^_^