Pergunta

Eu tenho uma lista de nomes de chave que eu quero a granel buscar (Os nomes das teclas são armazenados em um StringListProperty ligado a uma entidade). Meu plano geral era fazer:

usernames = userrefInstance.users # A collection of strings on another 
model. 
keys = [Key.from_path('User', key_name) for username in usernames] 
users = db.get(keys)

As minhas perguntas não Key.from_path bateu o armazenamento de dados? Estou tentando ser o mais rápido possível e se Key.from_path atinge o armazenamento de dados eu preciso trabalhar outra maneira de armazenar uma coleção de chaves - Eu particularmente não quer armazenar o objeto Key em uma propriedade de lista como eu também fornecem usuário consultas amigáveis ??através dos StringListPropererties.

Foi útil?

Solução

Depois de cavar e perguntas sobre outro grupo, verifica-se que:

chaves são inteiramente determinado pelo aplicativo ID eo caminho, por isso não há necessidade de acessar o armazenamento de dados para isso. - Nick Johnson

Ou você também pode usar uma lista de db.Key

Outras dicas

Os parâmetros que você passa para Key.from_path() conter todas as informações necessárias para construir a única chave de modo que não há necessidade para isso para bater o armazenamento de dados.

Cada entidade no armazenamento de dados tem uma chave que identifica de forma única. A chave consiste nos seguintes componentes:

  1. O tipo de entidade, que categoriza-lo com o propósito de consultas de armazenamento de dados
  2. Um identificador para a pessoa física, que pode ser tanto
    • uma cadeia de nome de chave
    • um inteiro numérico ID
  3. Um caminho ancestral opcional localizar a entidade dentro da hierarquia de armazenamento de dados

Fonte: https://developers.google.com/appengine/docs/ python / datastore / entidades

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top