Pacote google.appengine.ext

Resumo

NDB: uma nova API de armazenamento de dados para o tempo de execução Python do Google App Engine.

Submódulos

google.appengine.ext.ndb.blobstore

Interface NDB para o Blobstore.

google.appengine.ext.ndb.context

Classe de contexto.

google.appengine.ext.ndb.django_middleware

Middleware do Django para NDB.

google.appengine.ext.ndb.eventloop

Um loop de evento.

google.appengine.ext.ndb.google_imports

Decida dinamicamente de onde importar módulos do Google App Engine.

google.appengine.ext.ndb.key

A classe Key e os utilitários associados.

google.appengine.ext.ndb.metadata

Modelos e funções auxiliares para acessar metadados do armazenamento de dados do app.

google.appengine.ext.ndb.model

Classes Model e Property, além de material associado.

google.appengine.ext.ndb.msgprop

MessageProperty: uma propriedade que armazena objetos Message ProtoRPC.

google.appengine.ext.ndb.polymodel

Modelos e consultas polimórficos.

google.appengine.ext.ndb.query

Wrapper Query de nível superior.

google.appengine.ext.ndb.stats

Modelos a serem usados ao acessar estatísticas de uso específicas do armazenamento de dados do aplicativo.

google.appengine.ext.ndb.tasklets

Um decorador tasklet.

google.appengine.ext.ndb.utils

Utilitários de nível inferior usados internamente por NDB.

Índice

google.appengine.ext.ndb.Return

alias de StopIteration

google.appengine.ext.ndb.tasklet(func)source
google.appengine.ext.ndb.synctasklet(func)source

Decorador para executar uma função como um tasklet quando chamado.

Use-o para encapsular uma função de gerenciador de solicitações que será chamada por alguma biblioteca de aplicativo da Web (por exemplo, uma função de visualização do Django ou um método webapp.RequestHandler.get).

google.appengine.ext.ndb.toplevel(func)source

Um tasklet de sincronização que define um novo contexto padrão.

Use-o em funções de visualização de nível superior, como webapp.RequestHandler.get(), ou funções de visualização do Django.

google.appengine.ext.ndb.sleep(dt)source

Função pública para suspensão temporária.

Exemplo

yield tasklets.sleep(0.5) # Suspensão por meio segundo.

google.appengine.ext.ndb.add_flow_exception(exc)source

Adicione uma exceção que não precisa ser registrada.

O argumento precisa ser uma subclasse de Exception.

google.appengine.ext.ndb.get_return_value(err)source
google.appengine.ext.ndb.get_context()source
google.appengine.ext.ndb.set_context(new_context)source
google.appengine.ext.ndb.make_default_context()source
google.appengine.ext.ndb.make_context(*args, **kwds)source
class google.appengine.ext.ndb.Future(info=None)source

Bases: object

Um Future tem zero ou mais retornos de chamada.

Os retornos de chamada serão chamados quando o resultado estiver pronto.

OBSERVAÇÃO: isso é parcialmente inspirado na interface Future definida por PEP 3148, mas sem conformidade com ela. Também há inspiração (e tentativa de compatibilidade parcial) nas classes UserRPC e MultiRpc específicas do App Engine.

FINISHING = 2
IDLE = 0
RUNNING = 1
add_callback(callback, *args, **kwds)source
add_immediate_callback(callback, *args, **kwds)source
check_success()source
done()source
dump()source
dump_stack()source
get_exception()source
get_result()source
get_traceback()source
set_exception(exc, tb=None)source
set_result(result)source
state
wait()source
classmethod wait_all(futures)source
classmethod wait_any(futures)source
class google.appengine.ext.ndb.MultiFuture(info=None)source

Bases: google.appengine.ext.ndb.tasklets.Future

Um Future que depende de vários outros.

Ele é usado internamente por "v1, v2, … = yield f1, f2, …". A semântica (por exemplo, processamento de erros) é restrita por esse caso de uso.

O protocolo do POV do autor da chamada é:

mf = MultiFuture()
mf.add_dependent(<some other Future>)  -OR- mf.putq(<some value>)
mf.add_dependent(<some other Future>)  -OR- mf.putq(<some value>)
  .
  . (More mf.add_dependent() and/or mf.putq() calls)
  .
mf.complete()  # No more dependents will be added.
  .
  . (Time passes)
  .
results = mf.get_result()

Agora, o resultado é uma lista de resultados de todos os Futures dependentes na ordem em que foram adicionados.

É válido adicionar os mesmos dependentes várias vezes.

Os retornos de chamada podem ser adicionados a qualquer momento.

Em relação a um POV Future dependente, não há nada a ser feito: um retorno de chamada é automaticamente adicionado a cada Future dependente, que sinalizará a conclusão dele para o MultiFuture.

Processamento de erros: se algum Future dependente gerar um erro, este será propagado para mf. Para forçar um erro inicial, você pode chamar mf.set_exception(), em vez de mf.complete(). Depois disso, você não poderá mais chamar mf.add_dependent() ou mf.putq().

add_dependent(fut)source
complete()source
putq(value)source
set_exception(exc, tb=None)source
class google.appengine.ext.ndb.QueueFuture(info=None)source

Bases: google.appengine.ext.ndb.tasklets.Future

Um Queue que segue o mesmo protocolo de MultiFuture.

Porém, em vez de retornar resultados como uma lista, ele permitirá recuperar resultados assim que eles estiverem prontos, individualmente, usando-se getq(). O próprio Future termina com um resultado None quando o último resultado está pronto (independentemente de ter sido recuperado ou não).

O método getq() retorna um Future que será bloqueado até o próximo resultado estar pronto e retornará esse resultado. Cada chamada getq() recupera um único resultado. As chamadas getq() extras após o retorno do último resultado retornarão EOFError como a exceção de Future delas. Ou seja, q.getq() retorna um Future como sempre, mas produzir esse Future gera EOFError.

OBSERVAÇÃO: os valores também podem ser enviados diretamente por .putq(value). No entanto, não há controle de fluxo. Se o produtor for mais rápido do que o consumidor, a fila aumentará desordenadamente.

add_dependent(fut)source
complete()source
getq()source
putq(value)source
set_exception(exc, tb=None)source
class google.appengine.ext.ndb.SerialQueueFuture(info=None)source

Bases: google.appengine.ext.ndb.tasklets.Future

Igual a QueueFuture, mas mantém a ordem de inserção.

Essa classe é usada por operações Query.

Invariantes:

  • Pelo menos um de _queue e _waiting está vazio.

  • Os Futures em _waiting estão sempre pendentes.

Os Futures em _queue podem estar pendentes ou concluídos.

Na discussão abaixo, add_dependent() é tratado da mesma maneira que putq().

Se putq() estiver à frente de getq(), a situação será esta:

putq() v

_queue: [f1, f2, …]; _waiting: [] ^ getq()

Aqui, putq() acrescenta um Future à direita de _queue, e getq() remove um da esquerda.

Se getq() estiver à frente de putq(), será assim:

putq() v

_queue: []; _waiting: [f1, f2, …]

^ getq()

Aqui, putq() remove um Future à esquerda de _waiting, e getq() acrescenta um à direita.

Quando ambos estão vazios, putq() acrescenta um Future à direita de _queue e getq() acrescenta um à direita de _waiting.

A sinalização _full indica que não serão feitas mais chamadas para putq(). Ela é definida com uma chamada a complete() ou set_exception().

Chamar complete() sinaliza que mais nenhuma outra chamada putq() será feita. Se getq() estiver atrás, as chamadas getq() subsequentes vão consumir _queue até que ele esteja vazio e, depois disso, retornarão um Future que passa EOFError. getq() propriamente dito jamais gera EOFError. Se getq() estiver à frente quando complete() for chamado, os Futures em _waiting terão todos passado uma exceção EOFError, o que acaba consumindo _waiting.

Se, em vez de complete(), set_exception() for chamado, a exceção e o traceback definidos serão usados, em vez de EOFError.

add_dependent(fut)source
complete()source
getq()source
putq(value)source
set_exception(exc, tb=None)source
class google.appengine.ext.ndb.ReducingFuture(reducer, info=None, batch_size=20)source

Bases: google.appengine.ext.ndb.tasklets.Future

Um Queue que segue o mesmo protocolo de MultiFuture.

No entanto, o resultado, em vez de ser uma lista de resultados de Futures dependentes, é calculado com uma chamada a um tasklet "redutor". Esse tasklet utiliza uma lista de valores e retorna um único valor. Ele pode ser chamado várias vezes em sub-listas de valores e precisa se comportar como, por exemplo, sum().

OBSERVAÇÃO: os valores de entrada do redutor podem ser reordenados em comparação com a ordem na qual foram adicionados à fila.

add_dependent(fut)source
complete()source
putq(value)source
set_exception(exc, tb=None)source
class google.appengine.ext.ndb.Keysource

Bases: object

Uma chave de armazenamento de dados imutável.

Para flexibilidade e praticidade, várias assinaturas de construtor são aceitas.

A maneira principal de criar uma chave é usar argumentos posicionais: - Key(kind1, id1, kind2, id2, …).

Esta é uma forma abreviada para qualquer uma destas duas formas mais longas: - Key(pairs=[(kind1, id1), (kind2, id2), …]) - Key(flat=[kind1, id1, kind2, id2, …])

Qualquer uma das formas de construtor acima pode passar outra chave usando parent=<key>. Os pares (kind, id) da chave pai são inseridos antes dos pares (kind, id) serem passados explicitamente.

Você também pode criar uma chave com base em uma string codificada "segura para URL": - Key(urlsafe=<string>)

Para fins internos, existem os seguintes construtores: - Key(reference=<reference>): passa um objeto Reference de nível inferior. - Key(serialized=<string>): passa um Reference de nível inferior serializado. - Key(<dict>): para liberação, o mesmo de Key(**<dict>).

A string "url-safe" é realmente um Reference serializado codificado em base64 seguro para Web, mas é melhor pensar nela apenas como uma string exclusiva opaca.

Outros argumentos de palavra-chave do construtor: - app=<string>: especifique o ID do aplicativo. - namespace=<string>: especifique o namespace.

Se um Reference for passado (usando um de referência, serializado ou seguro para URL), os argumentos e as palavras-chave de namespace precisarão corresponder ao que já está presente no Reference (depois da decodificação, se necessário). A palavra-chave pai não pode ser combinada com um Reference de forma alguma.

As chaves são imutáveis, o que significa que um objeto Key não poderá ser modificado depois de ter sido criado. Isso é aplicado pela implementação, bem como o Python permite.

Para acessar o conteúdo de uma chave, os seguintes métodos e as operações são aceitos:

  • repr(key), str(key): retornam uma representação de string semelhante à forma de construtor mais curta, omitindo o app e o namespace, a menos que eles sejam diferentes do valor padrão.

  • key1 == key2, key1 != key2: comparação de igualdade entre Keys.

  • hash(key): um valor de hash suficiente para armazenar Keys em um dict.

  • key.pairs(): uma tupla de pares (kind, id).

  • key.flat(): uma tupla de valores kind e id simples, ou seja (kind1, id1, kind2, id2 …).

  • key.app(): o ID do aplicativo.

  • key.id(): o código da string ou do inteiro no último par (kind, id) ou None, caso a chave esteja incompleta.

  • key.string_id(): o código da string no último par (kind, id) ou None, caso a chave tenha um código do inteiro ou esteja incompleta.

  • key.integer_id(): o código da string no último par (kind, id) ou None, caso a chave tenha um código do inteiro ou esteja incompleta.

  • key.namespace(): o namespace.

  • key.kind(): um atalho para key.pairs()[-1][0].

  • key.parent(): um Key criado com base em todos, menos os últimos pares (kind, id).

  • key.urlsafe(): um Reference serializado codificado em base64 seguro para Web.

  • key.serialized(): um Reference serializado.

  • key.reference(): um objeto Reference. O autor da chamada promete não mudá-lo.

As chaves também são compatíveis com a interação com o armazenamento de dados. Esses métodos são os únicos que interagem em qualquer tipo de atividade de E/S. Para objetos Future, consulte o documento de ndb/tasklets.py.

  • key.get(): retorne a entidade de Key.

  • key.get_async(): retorne um Future com o resultado eventual que será a entidade de Key.

  • key.delete(): exclua a entidade de Key.

  • key.delete_async(): exclua de maneira assíncrona a entidade de Key.

As chaves podem ser liberadas.

É melhor evitar Key subclasse. Seria difícil acertá-lo.

app()source

Retorne o ID do aplicativo.

delete(**ctx_options)source

Exclua de maneira síncrona a entidade para essa Key.

Trata-se de um ambiente autônomo caso não haja uma entidade assim.

delete_async(**ctx_options)source

Programe a exclusão da entidade para essa Key.

Isso retorna um Future com um resultado disponibilizado assim que a exclusão for concluída. Se essa entidade não existir, um Future continuará sendo retornado. Em todos os casos, o resultado de Future é None (ou seja, não há como saber se a entidade existiu ou não).

flat()source

Retorne uma tupla de valores kind e id alternados.

classmethod from_old_key(old_key)source
get(**ctx_options)source

Consiga de maneira síncrona a entidade dessa Key.

Retorne None, caso não haja essa entidade.

get_async(**ctx_options)source

Retorne um Future com um resultado que seja a entidade de Key.

Se essa entidade não existir, um Future continuará sendo retornado, e o resultado de retorno eventual Future será None.

id()source

Retorne o código de string ou inteiro no último par (kind, id), caso haja.

Retorna

Um código de string ou inteiro ou None, caso a chave esteja incompleta.

integer_id()source

Retorne o código do inteiro no último par (kind, id), caso haja.

Retorna

Um código de inteiro ou None, caso a chave tenha um código de string ou esteja incompleta.

kind()source

Retorne o tipo da entidade referenciada.

Este é o tipo do último par (kind, id).

namespace()source

Retorne o namespace.

pairs()source

Retorne uma tupla de pares (kind, id).

parent()source

Retorne um Key criado com base em todos, menos os últimos pares (kind, id).

Se houver apenas um par (kind, id), retorne None.

reference()source

Retorne o objeto Reference deste Key.

Trata-se de uma instância entity_pb.Reference: uma classe de buffer de protocolo usada pela API de nível inferior para o armazenamento de dados.

OBSERVAÇÃO: o autor da chamada não precisa modificar o valor de retorno.

root()source

Retorne a chave raiz. Trata-se do próprio pai ou superior.

serialized()source

Retorne o objeto Reference serializado deste Key.

string_id()source

Retorne o código da string no último par (kind, id), caso haja.

Retorna

Um código de string ou None, caso a chave tenha um código de inteiro ou esteja incompleta.

to_old_key()source
urlsafe()source

Retorne uma codificação de string segura para URL que codifica Reference de Key.

Essa string é compatível com outras APIs e linguagens e com as strings usadas para representar Keys no GQL e no Admin Console do App Engine.

class google.appengine.ext.ndb.BlobKey(blob_key)source

Bases: object

Chave usada para identificar um blob no Blobstore.

Esse objeto encapsula uma string usada internamente pela Blobstore API para identificar blobs de aplicativo. O BlobKey corresponde ao nome da entidade BlobReference subjacente.

Essa classe é exposta na API em google.appengine.ext.db e google.appengine.ext.blobstore.

ToXml()source
class google.appengine.ext.ndb.GeoPt(lat, lon=None)source

Bases: object

Um ponto geográfico, especificado por coordenadas de latitude e longitude de ponto flutuante. Costuma ser usado para integração com sites de mapeamento como Google Maps. Ele também pode ser usado como coordenadas ICBM.

Trata-se do elemento georss:point. Na saída XML, as coordenadas são fornecidas como os atributos lat e lon. Consulte: http://georss.org/

Serializado para "<lat>,<lon>". Gera BadValueError caso seja passado como uma string serializada inválida, ou caso lat e lon não sejam pontos flutuantes válidos nos intervalos [-90, 90] e [-180, 180], respectivamente.

ToXml()source
lat = None
lon = None
exception google.appengine.ext.ndb.Rollbacksource

Bases: google.appengine.api.datastore_errors.Error

Pode ser gerado por funções de transação quando elas desejam reverter, em vez de confirmar. Qualquer exceção gerada por uma função de transação causará uma reversão. Isso é essencialmente por praticidade. Consulte datastore.RunInTransaction para detalhes.

class google.appengine.ext.ndb.Indexsource

Bases: google.appengine.ext.ndb.model._NotEqualMixin

Objeto imutável que representa um índice.

ancestor

Se este é um índice ancestral, um bool.

kind

O tipo indexado, uma string.

properties

Uma lista de objetos PropertyIndex que fornece as propriedades indexadas.

class google.appengine.ext.ndb.IndexStatesource

Bases: google.appengine.ext.ndb.model._NotEqualMixin

Objeto imutável que representa o índice e o estado dele.

definition

Um objeto Index que descreve o índice.

id

O código do índice, um inteiro.

state

O estado do índice, uma string.

Os valores possíveis são "error", "delete", "serving" ou "building".

class google.appengine.ext.ndb.IndexPropertysource

Bases: google.appengine.ext.ndb.model._NotEqualMixin

Objeto imutável que representa uma única propriedade em um índice.

direction

A direção no índice dessa propriedade, "asc" ou "desc".

name

O nome da propriedade indexada, uma string.

class google.appengine.ext.ndb.ModelAdapter(default_model=None, id_resolver=None)source

Bases: google.appengine.datastore.datastore_rpc.AbstractAdapter

Conversões entre classes Key e Model "our" e protobufs.

Ele é necessário para criar um objeto Connection, que, por sua vez, é necessário para criar um objeto Context.

Consulte a docstring da classe base para mais informações sobre as assinaturas.

entity_to_pb(ent)source
key_to_pb(key)source
pb_to_entity(pb)source
pb_to_index(pb)source
pb_to_key(pb)source
class google.appengine.ext.ndb.ModelAttributesource

Bases: object

Uma classe Base que significa a presença de um método _fix_up().

class google.appengine.ext.ndb.ModelKeysource

Bases: google.appengine.ext.ndb.model.Property

Propriedade especial para armazenar a chave Model.

class google.appengine.ext.ndb.MetaModel(name, bases, classdict)source

Bases: type

Metaclasse de Model.

Ele existe para corrigir as propriedades. Elas precisam saber o nome delas. Isso é feito chamando-se o método _fix_properties() da classe.

class google.appengine.ext.ndb.Model(*args, **kwds)source

Bases: google.appengine.ext.ndb.model._NotEqualMixin

Uma classe que descreve as entidades do Cloud Datastore.

As instâncias de Model costumam ser chamadas de entidades. Todas as classes de modelo herdadas de Model automaticamente têm MetaModel como a metaclasse dele. Dessa maneira, as propriedades são corrigidas devidamente após a classe, uma vez definida a classe.

Por causa disso, não é possível usar o mesmo objeto Property para descrever várias propriedades. Crie objetos Property separados para cada propriedade. Por exemplo, isto não funciona:

wrong_prop = StringProperty()
class Wrong(Model):
  wrong1 = wrong_prop
  wrong2 = wrong_prop

O tipo normalmente é igual ao nome da classe (exclusivo do nome do módulo ou qualquer outro escopo pai). Para modificar o tipo, defina um método de classe chamado _get_kind(), da seguinte maneira:

class MyModel(Model):
  @classmethod
  def _get_kind(cls):
    return 'AnotherKind'
classmethod allocate_ids(size=None, max=None, parent=None, **ctx_options)source

Aloca um intervalo de códigos de chave para esta classe de modelo.

Parâmetros
  • size: número de códigos a serem alocados. size ou max pode ser especificado, não ambos.

  • max: código máximo a ser alocado. size ou max pode ser especificado, não ambos.

  • parent: chave pai para a qual os códigos serão alocados.

  • **ctx_options: opções de contexto.

Retorna

Uma tupla com (start, end) para o intervalo alocado, inclusive.

classmethod allocate_ids_async(size=None, max=None, parent=None, **ctx_options)source

Aloca um intervalo de códigos de chave para esta classe de modelo.

Trata-se da versão assíncrona de Model._allocate_ids().

classmethod get_by_id(*args, **kwds)source

Retorna uma instância da classe Model por código.

Na verdade, trata-se apenas de uma forma abreviada de Key(cls, id, …).get().

Parâmetros
  • id: o código de uma string ou chave de inteiro

  • parent: chave pai opcional do modelo a ser conseguido

  • namespace: namespace opcional

  • app: código do app opcional

  • **ctx_options: opções de contexto

Retorna

Uma instância de modelo ou None, caso não encontrada.

classmethod get_by_id_async(*args, **kwds)source

Retorna uma instância da classe Model por código (e app, namespace).

Trata-se da versão assíncrona de Model._get_by_id().

classmethod get_or_insert(*args, **kwds)source

Recupera de maneira transacional uma entidade existente ou cria uma nova.

Argumentos posicionais:

name: nome da chave a ser recuperado ou criado.

Argumentos de palavra-chave
  • namespace: namespace opcional.

  • app: código do app opcional.

  • parent: chave da entidade pai, caso haja alguma.

  • context_options: objeto ContextOptions (sem argumentos de palavra-chave) ou None.

  • **kwds: argumentos de palavra-chave a serem passados para o construtor da classe de modelo, caso uma instância do nome da chave especificada ainda não exista. Se uma instância com key_name e parent fornecidos já existir, esses argumentos serão descartados.

Retorna

Instância existente da classe Model com o nome da chave especificada e pai ou um novo recém-criado.

classmethod get_or_insert_async(*args, **kwds)source

Recupera de maneira transacional uma entidade existente ou cria uma nova.

Trata-se da versão assíncrona de Model._get_or_insert().

classmethod gql(query_string, *args, **kwds)source

Execute uma consulta GQL.

has_complete_key()source

Retorne se esta entidade tem uma chave concluída.

key

Propriedade especial para armazenar a chave Model.

populate(**kwds)source

Preencha uma instância de argumentos de palavra-chave.

Cada argumento de palavra-chave será usado para definir uma propriedade correspondente. As palavras-chave precisam se referir ao nome da propriedade válido. Isso é semelhante a passar argumentos de palavra-chave para o construtor Model, exceto pelo fato de nenhuma provisão para key, id ou parent ser feita.

put(**ctx_options)source

Grave essa entidade no Cloud Datastore.

Se a operação criar ou concluir uma chave, o atributo key da entidade será definido como a chave nova e completa.

Retorna

A chave da entidade. Ela é sempre uma chave concluída.

put_async(**ctx_options)source

Grave essa entidade no Cloud Datastore.

Trata-se da versão assíncrona de Model._put().

classmethod query(*args, **kwds)source

Crie um objeto Query para essa classe.

Parâmetros
  • distinct: bool opcional, forma abreviada de group_by = projection.

  • *args: usado para aplicar um filtro inicial.

  • **kwds: são passados para o construtor Query().

Retorna

Um objeto Query.

to_dict(*args, **kwds)source

Retorna um dict que contém os valores de propriedade da entidade.

Parâmetros
  • include: conjunto opcional de nomes de propriedade a serem incluídos, todo padrão.

  • exclude: conjunto opcional de nomes de propriedade a serem pulados, nenhum padrão. Um nome contido em include e exclude é excluído.

class google.appengine.ext.ndb.Expando(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.Model

Subclasse de modelo para dar suporte a nomes e tipos Property dinâmicos.

Consulte o docstring do modelo para detalhes.

google.appengine.ext.ndb.transaction(*args, **kwds)source

Execute um retorno de chamada em uma transação.

Parâmetros
  • callback: uma função ou uma tasklet a ser chamada

  • **ctx_options: opções de transação

Entre as opções úteis estão:

retries=N: repetir até N vezes (ou seja, tentar até N+1 vezes) propagation=<flag>: determina como uma transação existente precisa ser

propagada, em que <flag> pode ser um destes: TransactionOptions.NESTED: inicie uma transação aninhada (trata-se do

padrão, mas transações aninhadas reais ainda não estão implantadas. Dessa maneira, você só pode usá-la fora de uma transação existente).

TransactionOptions.MANDATORY: uma transação já precisa estar em andamento. TransactionOptions.ALLOWED: caso uma transação esteja em andamento, vincule a ela. TransactionOptions.INDEPENDENT: inicie sempre uma nova transação em paralelo.

xg=True: no Armazenamento de dados de alta replicação, ative transações entre

grupos, ou seja, permita a gravação de até cinco grupos de entidades.

read_only=True: indica que uma transação não fará gravações, o que

potencialmente possibilita mais capacidade.

AVISO: usar algo diferente de NESTED na sinalização de propagação pode ter consequências estranhas. Durante o uso de ALLOWED ou MANDATORY, caso uma exceção seja gerada, a transação possivelmente não seja segura para commit. Durante o uso de INDEPENDENT, não costuma ser seguro retornar valores lidos para o autor da chamada (como foram lidos na transação do autor da chamada).

Retorna

O que callback() retorna.

Gera
  • O que callback() gera, datastore_errors.TransactionFailedError

  • Caso haja falha na transação.

google.appengine.ext.ndb.transaction_async(*args, **kwds)source

Execute um retorno de chamada em uma transação.

Trata-se da versão assíncrona de transaction().

google.appengine.ext.ndb.in_transaction()source

Retorne se uma transação está ativa no momento.

google.appengine.ext.ndb.transactional(_func=None, **options)source
google.appengine.ext.ndb.transactional_async(_func=None, **options)source
google.appengine.ext.ndb.transactional_tasklet(_func=None, **options)source
google.appengine.ext.ndb.non_transactional(_func=None, **options)source
google.appengine.ext.ndb.get_multi(keys, **ctx_options)source

Busca uma sequência de chaves.

Parâmetros
  • keys: uma sequência de chaves

  • **ctx_options: opções de contexto

Retorna

Uma lista com itens que são uma instância de Model ou None, caso a chave não tenha sido encontrada.

google.appengine.ext.ndb.get_multi_async(keys, **ctx_options)source

Busca uma sequência de chaves.

Parâmetros
  • keys: uma sequência de chaves

  • **ctx_options: opções de contexto

Retorna

Uma lista de Futures.

google.appengine.ext.ndb.put_multi(entities, **ctx_options)source

Armazena uma sequência de instâncias de Model.

Parâmetros
  • entities: uma sequência de instâncias de Model

  • **ctx_options: opções de contexto

Retorna

Uma lista com as chaves armazenadas.

google.appengine.ext.ndb.put_multi_async(entities, **ctx_options)source

Armazena uma sequência de instâncias de Model.

Parâmetros
  • entities: uma sequência de instâncias de Model

  • **ctx_options: opções de contexto

Retorna

Uma lista de Futures.

google.appengine.ext.ndb.delete_multi(keys, **ctx_options)source

Exclui uma sequência de chaves.

Parâmetros
  • keys: uma sequência de chaves

  • **ctx_options: opções de contexto

Retorna

Uma lista com itens que são todos None, um por chave excluída.

google.appengine.ext.ndb.delete_multi_async(keys, **ctx_options)source

Exclui uma sequência de chaves.

Parâmetros
  • keys: uma sequência de chaves

  • **ctx_options: opções de contexto

Retorna

Uma lista de Futures.

google.appengine.ext.ndb.get_indexes(**ctx_options)source

Receba uma estrutura de dados que representa os índices configurados.

Parâmetros

**ctx_options: opções de contexto

Retorna

Uma lista de objetos Index.

google.appengine.ext.ndb.get_indexes_async(**ctx_options)source

Receba uma estrutura de dados que representa os índices configurados.

Parâmetros

**ctx_options: opções de contexto

Retorna

Um Future.

google.appengine.ext.ndb.make_connection(config=None, default_model=None, _api_version='datastore_v3', _id_resolver=None)source

Crie um novo objeto Connection com o adaptador correto.

Você também pode passar um objeto datastore_rpc.Configuration.

class google.appengine.ext.ndb.BlobProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.Property

Uma propriedade com valor que é uma string de bytes. Ela pode ser compactada.

class google.appengine.ext.ndb.JsonProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.BlobProperty

Uma propriedade com o valor que é um objeto Python codificável em Json.

class google.appengine.ext.ndb.StringProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.TextProperty

Uma propriedade indexada com o valor que é uma string de texto de comprimento limitado.

class google.appengine.ext.ndb.FloatProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.Property

Uma propriedade com o valor que é um flutuante Python.

Observação: int, long e bool também são permitidos.

google.appengine.ext.ndb.BadProjectionError

alias de InvalidPropertyError

class google.appengine.ext.ndb.LocalStructuredProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model._StructuredGetForDictMixin, google.appengine.ext.ndb.model.BlobProperty

Subestrutura serializada para um blob opaco.

Ela é parecida com StructuredProperty no lado do Python, mas é escrita como uma BlobProperty em Cloud Datastore. Ela não é indexada e não é possível consultar subpropriedades. Por outro lado, a representação em disco é mais eficiente e pode melhorar ainda mais passando-se compressed=True, que compacta os dados blob que usam gzip.

class google.appengine.ext.ndb.TimeProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.DateTimeProperty

Uma propriedade com o valor que é um objeto de tempo.

class google.appengine.ext.ndb.UserProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.Property

Uma propriedade com o valor que é um objeto User.

Observação: ela existe para compatibilidade com versões anteriores apenas com esquemas do Cloud Datastore existentes. Não recomendamos armazenar objetos User diretamente no Cloud Datastore, mas recomenda armazenar o valor user.user_id().

exception google.appengine.ext.ndb.InvalidPropertyErrorsource

Bases: google.appengine.api.datastore_errors.Error

Gerado quando uma propriedade não é aplicável a um determinado uso.

Por exemplo, uma propriedade precisa existir e ser indexada para ser usada na projeção ou no grupo por cláusula da consulta.

exception google.appengine.ext.ndb.KindErrorsource

Bases: google.appengine.api.datastore_errors.BadValueError

Gerado quando uma implementação para um tipo não pode ser encontrada.

Também gerado quando Kind não é uma string de oito bits.

class google.appengine.ext.ndb.ComputedProperty(func, name=None, indexed=None, repeated=None, verbose_name=None)source

Bases: google.appengine.ext.ndb.model.GenericProperty

Uma propriedade com o valor que é determinado por uma função fornecida pelo usuário.

As propriedades computadas não podem ser definidas diretamente, mas que são geradas por uma função quando obrigatório. Elas são úteis para fornecer campos no Cloud Datastore que podem ser usados para filtrar ou classificar sem precisar definir manualmente o valor no código. Por exemplo, classificar o comprimento de um BlobProperty ou usar um filtro de igualdade para verificar se outro campo não está vazio.

ComputedProperty pode ser declarado como uma propriedade regular, passando uma função como o primeiro argumento ou pode ser usado como um decorador para a função que faz o cálculo.

Exemplo:

>>> class DatastoreFile(Model): ... name = StringProperty() ... name_lower = ComputedProperty(lambda self: self.name.lower()) ... ... data = BlobProperty() ... ... @ComputedProperty ... def size(self): ... return len(self.data) ... ... def _compute_hash(self): ... return hashlib.sha1(self.data).hexdigest() ... hash = ComputedProperty(_compute_hash, name='sha1')
class google.appengine.ext.ndb.KeyProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.Property

Uma propriedade com o valor que é um objeto Key.

Argumento de palavra-chave opcional: kind=<kind>, para exigir que chaves atribuídas a essa propriedade sempre tenham o tipo indicado. Pode ser uma string ou uma subclasse Model.

class google.appengine.ext.ndb.BooleanProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.Property

Uma propriedade com o valor que é um bool do Python.

class google.appengine.ext.ndb.PickleProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.BlobProperty

Uma propriedade com o valor que é um objeto Python selecionável.

class google.appengine.ext.ndb.IntegerProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.Property

Uma propriedade com o valor que é um int ou long (ou bool) Python.

class google.appengine.ext.ndb.Property(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.ModelAttribute

Uma classe que descreve um atributo tipado, persistente, de uma entidade do Cloud Datastore.

Não confunda "property" do Python interna.

Trata-se apenas de uma classe base. Existem subclasses específicas que descrevem propriedades de diversos tipos (e GenericProperty que descreve uma propriedade tipada dinamicamente).

Todos os atributos Property, mesmo os considerados "public", têm nomes que começam com um sublinhado, porque StructuredProperty usa o namespace de atributo sem sublinhado para se referir a nomes Property aninhados. Isso é essencial para especificar consultas em subpropriedades (consulte o docstring do módulo).

A classe Property e as subclasses predefinidas dela permitem subclasses fáceis que usam APIs de validação e conversão para composição (ou empilhamento). Elas exigem algumas definições de terminologia:

  • "user value" é um valor como seria definido e acessado pelo código de aplicativo se usasse atributos padrão na entidade.

  • "base value" é um valor como seria serializado e desserializado no Cloud Datastore.

Os valores armazenados em ent._values[name] e acessados por _store_value() e _retrieve_value() podem ser valores de usuário ou base. Para recuperar valores de usuário, use _get_user_value(). Para recuperar valores de base, use _get_base_value(). Em especial, _get_value() chama _get_user_value(), e _serialize() chama de maneira efetiva _get_base_value().

Para armazenar um valor de usuário, basta chamar _store_value(). Para armazenar um valor de base, coloque o valor em um _BaseValue() e chame _store_value().

Uma subclasse Property que quer implementar uma transformação específica entre valores de usuário e serializáveis precisa implementar dois métodos, _to_base_type() e _from_base_type(). Eles NÃO precisam chamar o método super() deles. As super chamadas são processadas por _call_to_base_type() e _call_from_base_type(). Trata-se do significado de APIs para composição (ou empilhamento).

A API dá suporte a classes "stacking" com conversões user<–>base ainda mais sofisticadas: a conversão user–>base vai da mais sofisticada para a menos sofisticada, e a conversão base–>user vai da menos sofisticada para a mais sofisticada. Por exemplo, consulte a relação entre BlobProperty, TextProperty e StringProperty.

Além de _to_base_type() e _from_base_type(), o método _validate() também é uma API para composição.

A API de validação diferencia os valores de usuário "lax" de "strict". O conjunto de valores lax é um superconjunto do conjunto de valores rígidos. O método _validate() utiliza um valor lax e, caso necessário, converte-o em um valor rígido. Isso significa que, durante a definição do valor da propriedade, os valores lax são aceitos e, durante a especificação do valor da propriedade, somente valores rígidos serão retornados. Caso nenhuma conversão seja necessária, _validate() pode retornar None. Se o argumento estiver fora do conjunto de valores lax aceitos, _validate() precisará gerar uma exceção, preferencialmente erros TypeError ou datastore_errors.BadValueError.

Exemplo/boilerplate:

def _validate(self, value):

"Lax user value to strict user value." if not isinstance(value, <top type>):

raise TypeError(…) # Or datastore_errors.BadValueError(…).

def _to_base_type(self, value):

"(Strict) user value to base value." if isinstance(value, <user type>):

return <base type>(value)

def _from_base_type(self, value):

"base value to (strict) user value." if not isinstance(value, <base type>):

return <user type>(value)

Coisas que _validate(), _to_base_type() e _from_base_type() não precisam processar:

  • Nenhum: eles não serão chamados com None (e se retornarem None, isso significará que o valor não precisa de conversão).

  • Valores repetidos: a infraestrutura (_get_user_value() e _get_base_value()) processa a chamada de _from_base_type() ou _to_base_type() para cada item da lista em um valor repetido.

  • Encapsulamento de valores em _BaseValue(): o encapsulamento e o desencapsulamento são processados pela infraestrutura que chama as APIs para composição.

  • Comparações: as operações de comparação chamam _to_base_type () no operando delas.

  • Diferenciação de valores de usuário e base: a infraestrutura garante que _from_base_type() será chamado com valor base (unwrapped) e que _to_base_type() será chamado com um valor usuário.

  • Retorno do valor original: se algum deles retornar None, o valor original será mantido. Retornar um valor diferente de None substituirá o valor diferente.

IN(value)source

Operador de comparação para o operador "in" de comparação.

O Python no operador "in" não pode ser sobrecarregado da maneira que queremos. Dessa forma, definimos um método. Por exemplo:

Employee.query(Employee.rank.IN([4, 5, 6]))

O método é chamado ._IN(), mas normalmente pode ser invocado como .IN(). Esse método é fornecido para o caso em que você tem um StructuredProperty com um modelo que tem uma Property chamada IN.

class google.appengine.ext.ndb.DateProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.DateTimeProperty

Uma propriedade com o valor que é um objeto de data.

class google.appengine.ext.ndb.TextProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.BlobProperty

Uma propriedade não indexada com o valor que é uma string de texto de comprimento ilimitado.

class google.appengine.ext.ndb.DateTimeProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.Property

Uma propriedade com o valor que é um objeto de data e hora.

Observação: diferentemente do Django, auto_now_add pode ser modificado definindo-se o valor antes de gravar a entidade. E, diferentemente do db clássico, auto_now não fornece um valor padrão. Além disso, diferentemente do db clássico, quando a entidade é escrita, os valores de propriedade são atualizados de acordo com o que foi escrito. Por fim, lembre-se de que isso também atualiza o valor no cache em processo e que auto_now_add pode interagir de maneira estranha com repetições de transação (uma repetição de uma propriedade com auto_now_add definido reutilizará o valor que foi definido na primeira tentativa).

class google.appengine.ext.ndb.GenericProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.Property

Uma propriedade com o valor que pode ser (praticamente) qualquer tipo básico.

Ela é usada principalmente em Expando e órfãos (valores presentes no Cloud Datastore, mas não representados na subclasse Model), mas também pode ser usada explicitamente para propriedades com valores tipados dinamicamente.

Ele dá suporte a compressed=True, que só entra em vigor para valores str (e não unicode) e implica indexed=False.

exception google.appengine.ext.ndb.UnprojectedPropertyErrorsource

Bases: google.appengine.api.datastore_errors.Error

Gerado durante o recebimento de um valor de propriedade que não está na projeção.

class google.appengine.ext.ndb.StructuredProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model._StructuredGetForDictMixin

Uma propriedade com o valor que é uma entidade propriamente dita.

Os valores da sub-entidade são indexados e podem ser consultados.

Consulte o docstring do modelo para detalhes.

IN(value)source
class google.appengine.ext.ndb.GeoPtProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.Property

Uma propriedade com o valor que é um GeoPt.

exception google.appengine.ext.ndb.ComputedPropertyErrorsource

Bases: google.appengine.ext.ndb.model.ReadonlyPropertyError

Gerado durante a tentativa de definir um valor ou excluir uma propriedade computada.

class google.appengine.ext.ndb.BlobKeyProperty(*args, **kwds)source

Bases: google.appengine.ext.ndb.model.Property

Uma propriedade com o valor que é um objeto BlobKey.

exception google.appengine.ext.ndb.ReadonlyPropertyErrorsource

Bases: google.appengine.api.datastore_errors.Error

Gerado durante a tentativa de definir um valor de propriedade somente leitura.

class google.appengine.ext.ndb.Query(*args, **kwds)source

Bases: object

Objeto Query.

Normalmente criado chamando-se Model.query().

Consulte o docstring do módulo para exemplos.

Nem todas as operações em Queries são aceitas por instâncias _MultiQuery. Estas últimas são geradas conforme necessário quando qualquer um dos operadores !=, IN ou OR é usado.

analyze()source

Retorne uma lista que fornece os parâmetros obrigatórios por uma consulta.

ancestor

Acesso de ancestral (Key ou None).

app

Acesso de app (uma string ou None).

bind(*args, **kwds)source

Associe valores de parâmetro. Retorna um novo objeto Query.

count(*args, **kwds)source

Conte o número de resultados da consulta, até um limite.

Ele retorna o mesmo resultado que len(q.fetch(limit)), mas de maneira mais eficiente.

Você precisa passar um valor máximo para limitar o valor de trabalho feito pela consulta.

Parâmetros
  • limit: quantos resultados são contados no máximo.

  • **q_options: todos os argumentos de palavra-chave das opções de consulta são aceitos.

Retorna:

count_async(*args, **kwds)source

Conte o número de resultados da consulta, até um limite.

Trata-se da versão assíncrona de Query.count().

default_options

Acesso de default_options (uma instância QueryOptions ou None).

fetch(*args, **kwds)source

Busque uma lista de resultados da consulta, até um limite.

Parâmetros
  • limit: quantos resultados são recuperados no máximo.

  • **q_options: todos os argumentos de palavra-chave das opções de consulta são aceitos.

Retorna

Uma lista de resultados.

fetch_async(*args, **kwds)source

Busque uma lista de resultados da consulta, até um limite.

Trata-se da versão assíncrona de Query.fetch().

fetch_page(*args, **kwds)source

Busque uma página de resultados.

Este é um método especializado a ser usado paginando-se interfaces do usuário.

Parâmetros

page_size: o tamanho da página solicitado. Quantos resultados serão retornados no máximo.

Além disso, qualquer argumento de palavra-chave aceito pela classe QueryOptions é aceito. Em especial, para buscar a próxima página, você passa o cursor retornado por uma chamada para a próxima chamada usando start_cursor=<cursor>. Um idioma comum é passar o cursor para o cliente usando <cursor>.to_websafe_string() e para recriar esse cursor em uma solicitação subsequente usando Cursor.from_websafe_string(<string>).

Retorna

Uma tupla (resultados, cursor, mais) na qual o resultado é uma lista de resultados de consulta, cursor é um cursor que aponta apenas para o último resultado retornado e mais é um bool que indica se há (possivelmente) mais resultados depois disso.

fetch_page_async(*args, **kwds)source

Busque uma página de resultados.

Trata-se da versão assíncrona de Query.fetch_page().

filter(*args)source

Retorne uma nova consulta com filtros adicionais aplicados.

filters

Acesso de filtros (Node ou None).

get(**q_options)source

Receba o primeiro resultado da consulta, caso haja algum.

Isso é semelhante a chamar q.fetch(1) e retornar o primeiro item da lista de resultados, ou None, caso haja algum.

Parâmetros

**q_options: todos os argumentos de palavra-chave das opções de consulta são aceitos.

Retorna

Um único resultado, ou None, caso não haja resultados.

get_async(**q_options)source

Receba o primeiro resultado da consulta, caso haja algum.

Trata-se da versão assíncrona de Query.get().

group_by

Acesso de grupo por propriedades (uma instância de tupla ou None).

is_distinct

Verdadeiro caso os resultados contenham um conjunto exclusivo de valores de propriedade.

Isso acontece quando todas as propriedades em group_by também estão na projeção.

iter(**q_options)source

Crie um iterador na consulta.

Parâmetros

**q_options: todos os argumentos de palavra-chave das opções de consulta são aceitos.

Retorna

Um objeto QueryIterator.

kind

Acesso de tipo (uma string ou None).

map(*args, **kwds)source

Mapeie uma função de retorno de chamada ou uma tasklet nos resultados da consulta.

Parâmetros
  • callback: uma função ou uma tasklet a ser aplicada a cada resultado. Consulte abaixo.

  • merge_future: subclasse Futura opcional. Consulte abaixo.

  • **q_options: todos os argumentos de palavra-chave das opções de consulta são aceitos.

Assinatura de retorno: o retorno de chamada costuma ser chamado com uma entidade como argumento. No entanto, se keys_only=True for fornecido, ele será chamado com uma chave. Além disso, quando pass_batch_into_callback é True, ele é chamado com três argumentos: o lote atual, o índice dentro do lote e a entidade ou a Key nesse índice. O retorno de chamada pode retornar o que quiser. Se o retorno de chamada for None, um retorno de chamada trivial será considerado retornando a entidade ou a chave passada (ignorando produce_cursors).

Futuro de mesclagem opcional: merge_future é um argumento avançado que pode ser usado para modificar como os resultados de retorno de chamada são combinados no valor de retorno map() geral. Por padrão, uma lista de valores de retorno de chamada é produzida. Substituindo uma das poucas alternativas especializadas, você pode organizar de maneira contrária. Consulte as tasklets.MultiFuture da implementação padrão e uma descrição do objeto merge_future do protocolo precisam implementar o padrão. Entre as alternativas do mesmo módulo estão QueueFuture, SerialQueueFuture e ReducingFuture.

Retorna

Quando a consulta é executada até a conclusão e todos os retornos de chamada são retornados, map() retorna uma lista de resultados de todos os retornos de chamada. Porém, consulte "optional merge future" acima.

map_async(*args, **kwds)source

Mapeie uma função de retorno de chamada ou uma tasklet nos resultados da consulta.

Trata-se da versão assíncrona de Query.map().

namespace

Acesso de namespace (uma string ou None).

order(*args)source

Retorne uma nova consulta com pedidos de classificação adicionais aplicados.

orders

Acesso de filtros (uma datastore_query.Order ou None).

projection

Acesso de propriedades projetadas (uma instância de tupla ou None).

run_to_queue(*args, **kwds)source

Execute esta consulta colocando entidades na fila indicada.

class google.appengine.ext.ndb.QueryOptionssource

Bases: google.appengine.ext.ndb.context.ContextOptions, google.appengine.datastore.datastore_query.QueryOptions

Dê suporte a opções de contexto e consulta (esp. use_cache).

class google.appengine.ext.ndb.Cursor(*args, **kwds)source

Bases: google.appengine.datastore.datastore_query._BaseComponent

Uma classe imutável que representa uma posição relativa em uma consulta.

A posição denotada por um Cursor é relativa a um resultado em uma consulta, mesmo se o resultado tiver sido removido da consulta especificada. Normalmente para posicionar logo depois do último resultado retornado por um lote.

Um cursor só precisa ser usado em uma consulta com uma assinatura idêntica àquela que a produziu ou em uma consulta com a ordem de classificação inversa.

advance(offset, query, conn)source

Avança um cursor segundo o deslocamento especificado.

Parâmetros
  • offset: o valor para avançar a consulta atual

  • query: uma consulta idêntica àquela que criou este cursor

  • conn: o datastore_rpc.Connection a ser usado

Retorna

Um novo cursor avançado por deslocamento que usa a consulta fornecida.

static from_bytes(cursor)source

Recebe um cursor dado o formulário serializado da string de byte dele.

A forma serializada de um cursor pode ser alterada de maneira não compatível com versões anteriores. Neste caso, os cursores precisam ser regenerados com base em uma nova solicitação Query.

Parâmetros

cursor: um cursor serializado conforme retornado por .to_bytes.

Retorna

Um cursor.

Gera
  • datastore_errors.BadValueError caso o argumento de cursor não represente um

  • cursor serializado.

static from_websafe_string(cursor)source

Recebe um cursor dado o formulário serializado seguro para Web.

A forma serializada de um cursor pode ser alterada de maneira não compatível com versões anteriores. Neste caso, os cursores precisam ser regenerados com base em uma nova solicitação Query.

Parâmetros

cursor: um cursor serializado conforme retornado por .to_websafe_string.

Retorna

Um cursor.

Gera
  • datastore_errors.BadValueError caso o argumento do cursor não seja uma string

  • tipo não representa um cursor serializado.

reversed()source

DEPRECATED. Deixa de ser necessário chamar reversed() em cursores.

Um cursor retornado por uma consulta também pode ser usado em uma consulta com a ordem de classificação que foi revertida. Esse método retorna uma cópia do cursor original.

to_bytes()source

Serialize o cursor como uma string de bytes.

to_websafe_string()source

Serialize o cursor como uma string segura para a Web.

Retorna

Um cursor serializado codificado em base64.

urlsafe()source

Serialize o cursor como uma string segura para a Web.

Retorna

Um cursor serializado codificado em base64.

class google.appengine.ext.ndb.QueryIterator(*args, **kwds)source

Bases: object

Este iterador funciona em autores de chamada síncronos e assíncronos.

Para autores de chamada síncronos, basta usar:

para entidade em Account.query():

<use entity>

Os autores de chamada assíncronos usam este idioma:

it = iter(Account.query()) e (yield it.has_next_async()):

entity = it.next() <use entity>

Você também pode usar q.iter([options]), em vez de iter(q). Isso permite passar opções de consulta como keys_only ou produce_cursors.

Quando keys_only está definido, it.next() retorna uma chave, em vez de uma entidade.

Quando produce_cursors está definido, os métodos it.cursor_before() e it.cursor_after() retornam objetos Cursor correspondentes à posição de consulta pouco antes e logo depois do item retornado por it.next(). Para it.next() ser chamado pela primeira vez, ambos geram uma exceção. Depois que o loop terminar, retorne o cursor depois do último item retornado. Chamar it.has_next() não afeta os cursores. Você precisa chamar it.next() para que os cursores se movam. Às vezes, solicitar um cursor exige ida e volta do Cloud Datastore (mas não se você acabar solicitando um cursor correspondente ao limite de lote). Caso produce_cursors não esteja definido, ambos os métodos sempre geram uma exceção.

As consultas que exigem a mesclagem na memória de várias consultas (ou seja, consultas que usem os operadores IN, != ou OR) não dão suporte a opções de consulta.

cursor_after()source

Retorne o cursor após o item atual.

Você precisa passar um objeto QueryOptions com produce_cursors=True para que isso funcione.

Se não houver cursor ou item atual, gere BadArgumentError. Antes de next() ter sido retornado, não haverá cursor. Depois que o loop terminar, isso retornará o cursor depois do último item.

cursor_before()source

Retorna o cursor antes do item atual.

Você precisa passar um objeto QueryOptions com produce_cursors=True para que isso funcione.

Se não houver cursor ou item atual, gere BadArgumentError. Antes de next() ter sido retornado, não haverá cursor. Depois que o loop terminar, isso retornará o cursor depois do último item.

has_next()source

Retorne se um próximo item está disponível.

Consulte o docstring do módulo para o padrão de uso.

has_next_async(*args, **kwds)source

Retorne um Future com um resultado que dirá se um próximo item está disponível.

Consulte o docstring do módulo para o padrão de uso.

index_list()source

Retorne a lista de índices usados nesta consulta.

Ele retorna uma lista de representações de índice, em que uma representação do índice é igual à retornada por get_indexes().

Antes do primeiro resultado, as informações estão indisponíveis e None é retornado. Não se trata da mesma lista vazia: a lista vazia significa que nenhum índice foi usado para executar a consulta. Em dev_appserver, uma lista vazia também pode significar que somente índices internos foram usados. As consultas de metadados também retornam uma lista vazia aqui.

O uso apropriado é o seguinte:

q = <modelclass>.query(<filters>) i = q.iter() try:

i.next()

except Stopiteration:

pass

indexes = i.index_list() assert isinstance(indexes, list)

Observações: - Forçar produce_cursors=False faz isso retornar sempre None. - Isso sempre retorna None para várias consultas.

next()source

Iterator protocol: receba o próximo item ou gere StopIteration.

probably_has_next()source

Retorne se um próximo item está (provavelmente) disponível.

Ele não é igual a has_next(), porque quando

produce_cursors é definido, alguns atalhos são possíveis. No entanto, em alguns casos (por exemplo, quando a consulta tem um post_filter), podemos receber um falso positivo (retorna True, mas next() vai gerar StopIteration). Não há falsos negativos.

class google.appengine.ext.ndb.RepeatedStructuredPropertyPredicate(match_keys, pb, key_prefix)source

Bases: google.appengine.datastore.datastore_query.FilterPredicate

google.appengine.ext.ndb.AND

alias de ConjunctionNode

google.appengine.ext.ndb.OR

alias de DisjunctionNode

class google.appengine.ext.ndb.ConjunctionNodesource

Bases: google.appengine.ext.ndb.query.Node

Nó de árvore que representa um operador booliano AND em dois ou mais nós.

resolve(bindings, used)source
class google.appengine.ext.ndb.DisjunctionNodesource

Bases: google.appengine.ext.ndb.query.Node

Nó de árvore que representa um operador booliano OR em dois ou mais nós.

resolve(bindings, used)source
class google.appengine.ext.ndb.FilterNodesource

Bases: google.appengine.ext.ndb.query.Node

Nó de árvore para uma única expressão de filtro.

class google.appengine.ext.ndb.PostFilterNodesource

Bases: google.appengine.ext.ndb.query.Node

Nó de árvore que representa uma operação de filtragem na memória.

Ele é usado para representar filtros que não podem ser executados pelo armazenamento de dados, por exemplo, uma consulta para um valor estruturado.

class google.appengine.ext.ndb.FalseNodesource

Bases: google.appengine.ext.ndb.query.Node

Nó da árvore para um filtro de falha permanente.

class google.appengine.ext.ndb.Nodesource

Bases: object

Classe base para nós de árvore de expressão do filtro.

Os nós de árvore são considerados imutáveis, mesmo que contenham instâncias de Parameter, que não são. Em especial, duas árvores idênticas podem ser representadas pelo mesmo objeto Node em contextos diferentes.

resolve(bindings, used)source

Retorne um Node com Parameters substituídos pelos valores selecionados.

Parâmetros
  • bindings: um dict que mapeia inteiros e strings para valores.

  • used: um dict com o uso de uma vinculação é registrado.

Retorna

Uma instância de Node.

class google.appengine.ext.ndb.ParameterNodesource

Bases: google.appengine.ext.ndb.query.Node

Nó de árvore para um filtro parametrizado.

resolve(bindings, used)source
class google.appengine.ext.ndb.ParameterizedThingsource

Bases: object

Classe base para Parameter e ParameterizedFunction.

Existe basicamente para verificações isinstance().

class google.appengine.ext.ndb.Parameter(key)source

Bases: google.appengine.ext.ndb.query.ParameterizedThing

Representa uma variável vinculada em uma consulta GQL.

Parameter(1) corresponde a um slot identificado “:1” em uma consulta GQL. Parameter(‘xyz’) corresponde a um slot identificado “:xyz”.

O valor precisa ser definido (vinculado) separadamente chamando .set(value).

key

Recupere a chave.

resolve(bindings, used)source
class google.appengine.ext.ndb.ParameterizedFunction(func, values)source

Bases: google.appengine.ext.ndb.query.ParameterizedThing

Representa uma função GQL com argumentos parametrizados.

Por exemplo, ParameterizedFunction(‘key’, [Parameter(1)]) significa a sintaxe GQL KEY(:1).

func
is_parameterized()source
resolve(bindings, used)source
values
google.appengine.ext.ndb.gql(query_string, *args, **kwds)source

Analise uma string de consulta GQL.

Parâmetros
  • query_string: consulta GQL completa. Por exemplo, ‘SELECT * FROM Kind WHERE prop = 1’.

  • **kwds (*args,):

    Caso presente, é usado para chamar bind().

Retorna

Uma instância de query_class.

class google.appengine.ext.ndb.Context(conn=None, auto_batcher_class=google.appengine.ext.ndb.context.AutoBatcher, config=None, parent_context=None)source

Bases: object

allocate_ids(*args, **kwds)source
call_on_commit(callback)source

Chame um retorno de chamada mediante o commit bem-sucedido de uma transação.

O retorno de chamada é feito imediatamente caso não esteja em uma transação.

Em uma transação, vários retornos de chamada podem ser registrados e serão chamados assim que a transação for confirmada na ordem em que foram registrados. Em caso de falha na transação, os retornos de chamada não serão realizados.

Caso gere uma exceção, o retorno de chamada surge normalmente. Isso significa que, se o retorno de chamada for feito imediatamente, qualquer exceção gerada também surgirá imediatamente. Se a chamada for adiada até o commit, os retornos de chamada restantes serão pulados, e a exceção surgirá pela chamada transaction(). No entanto, a transação já terá sido confirmada a esta altura.

clear_cache()source

Apague o cache na memória.

OBSERVAÇÃO: isso não afeta memcache.

static default_cache_policy(key)source

Política de cache padrão.

Isso é adiado para _use_cache na classe Model.

Parâmetros

key: instância de Key.

Retorna

Um bool ou None.

static default_datastore_policy(key)source

Política de armazenamento de dados padrão.

Isso é adiado para _use_datastore na classe Model.

Parâmetros

key: instância de Key.

Retorna

Um bool ou None.

static default_memcache_policy(key)source

Política memcache padrão.

Isso é adiado para _use_memcache na classe Model.

Parâmetros

key: instância de Key.

Retorna

Um bool ou None.

static default_memcache_timeout_policy(key)source

Política de tempo limite de memcache padrão.

Isso é adiado para _memcache_timeout na classe Model.

Parâmetros

key: instância de Key.

Retorna

Tempo limite de memcache a ser usado (inteiro) ou None.

delete(*args, **kwds)source
flush(*args, **kwds)source
get(*args, **kwds)source

Retorne uma instância de Model, dada a chave de entidade.

Ele usará o cache de contexto se a política de cache da chave especificada estiver ativada.

Parâmetros
  • key: instância de Key

  • **ctx_options: opções de contexto

Retorna

Uma instância de Model caso a chave exista no armazenamento de dados. Caso contrário, None.

get_cache_policy()source

Retorne a função da política de cache de contexto atual.

Retorna

Uma função que aceita uma instância de Key como argumento e retorna um bool indicando se ele precisa ser armazenado em cache. Pode ser None.

get_datastore_policy()source

Retorne a função de política de armazenamento de dados de contexto atual.

Retorna

Uma função que aceita uma instância de Key como argumento e retorna um bool indicando se ele precisa usar o armazenamento de dados. Pode ser None.

get_indexes(*args, **kwds)source
get_memcache_policy()source

Retorne a função da política de memcache atual.

Retorna

Uma função que aceita uma instância de Key como argumento e retorna um bool indicando se ele precisa ser armazenado em cache. Pode ser None.

get_memcache_timeout_policy()source

Retorne a função da política atual para o tempo limite de memcache (expiração).

in_transaction()source

Retorne se uma transação está ativa no momento.

iter_query(*args, **kwds)source
map_query(*args, **kwds)source
memcache_add(key, value, time=0, namespace=None, deadline=None)source
memcache_cas(key, value, time=0, namespace=None, deadline=None)source
memcache_decr(key, delta=1, initial_value=None, namespace=None, deadline=None)source
memcache_delete(key, seconds=0, namespace=None, deadline=None)source
memcache_get(key, for_cas=False, namespace=None, use_cache=False, deadline=None)source

Um wrapper de lote automático para memcache.get() ou .get_multi().

Parâmetros
  • key: a chave a ser definida. Ele precisa ser uma string. Nenhum prefixo é aplicado.

  • for_cas: se True, a solicitação e o armazenamento de códigos CAS no Context.

  • namespace: namespace opcional.

  • deadline: prazo opcional para o RPC.

Retorna

Um Future (!) com um valor de retorno recuperado de memcache ou None.

memcache_gets(key, namespace=None, use_cache=False, deadline=None)source
memcache_incr(key, delta=1, initial_value=None, namespace=None, deadline=None)source
memcache_replace(key, value, time=0, namespace=None, deadline=None)source
memcache_set(key, value, time=0, namespace=None, use_cache=False, deadline=None)source
put(*args, **kwds)source
set_cache_policy(func)source

Defina a função da política de cache de contexto.

Parâmetros

func: uma função que aceita uma instância de Key como argumento e retorna um bool indicando se ele precisa ser armazenado em cache. Pode ser None.

set_datastore_policy(func)source

Defina a função da política do armazenamento de dados de contexto.

Parâmetros

func: uma função que aceita uma instância de Key como argumento e retorna um bool indicando se ele precisa usar o armazenamento de dados. Pode ser None.

set_memcache_policy(func)source

Defina a função da política de memcache.

Parâmetros

func: uma função que aceita uma instância de Key como argumento e retorna um bool indicando se ele precisa ser armazenado em cache. Pode ser None.

set_memcache_timeout_policy(func)source

Defina a função da política para tempo limite de memcache (expiração).

Parâmetros

func: uma função que aceita uma instância de Key como argumento e retorna um inteiro indicando o tempo limite de memcache desejado. Pode ser None.

Caso a função retorne 0, isso implica o tempo limite padrão.

transaction(*args, **kwds)source
urlfetch(*args, **kwds)source
class google.appengine.ext.ndb.ContextOptionssource

Bases: google.appengine.datastore.datastore_rpc.Configuration

Opções de configuração que podem ser passadas com get/put/delete.

max_memcache_items

Um descritor para uma opção de configuração.

Essa classe é usada para criar uma opção de configuração em uma classe que herda de BaseConfiguration. Uma função validadora decorada com essa classe será convertida em um descritor somente leitura, e BaseConfiguration implementará a lógica de construtor e mesclagem dessa opção de configuração. Uma função validadora utiliza um único valor não None para validar e gera uma exceção ou retorna esse valor (ou um valor equivalente). Um validador é chamado uma vez no momento da construção, mas somente se um valor não None para a opção de configuração for especificado, os argumentos de palavra-chave do construtor.

memcache_deadline

Um descritor para uma opção de configuração.

Essa classe é usada para criar uma opção de configuração em uma classe que herda de BaseConfiguration. Uma função validadora decorada com essa classe será convertida em um descritor somente leitura, e BaseConfiguration implementará a lógica de construtor e mesclagem dessa opção de configuração. Uma função validadora utiliza um único valor não None para validar e gera uma exceção ou retorna esse valor (ou um valor equivalente). Um validador é chamado uma vez no momento da construção, mas somente se um valor não None para a opção de configuração for especificado, os argumentos de palavra-chave do construtor.

memcache_timeout

Um descritor para uma opção de configuração.

Essa classe é usada para criar uma opção de configuração em uma classe que herda de BaseConfiguration. Uma função validadora decorada com essa classe será convertida em um descritor somente leitura, e BaseConfiguration implementará a lógica de construtor e mesclagem dessa opção de configuração. Uma função validadora utiliza um único valor não None para validar e gera uma exceção ou retorna esse valor (ou um valor equivalente). Um validador é chamado uma vez no momento da construção, mas somente se um valor não None para a opção de configuração for especificado, os argumentos de palavra-chave do construtor.

use_cache

Um descritor para uma opção de configuração.

Essa classe é usada para criar uma opção de configuração em uma classe que herda de BaseConfiguration. Uma função validadora decorada com essa classe será convertida em um descritor somente leitura, e BaseConfiguration implementará a lógica de construtor e mesclagem dessa opção de configuração. Uma função validadora utiliza um único valor não None para validar e gera uma exceção ou retorna esse valor (ou um valor equivalente). Um validador é chamado uma vez no momento da construção, mas somente se um valor não None para a opção de configuração for especificado, os argumentos de palavra-chave do construtor.

use_datastore

Um descritor para uma opção de configuração.

Essa classe é usada para criar uma opção de configuração em uma classe que herda de BaseConfiguration. Uma função validadora decorada com essa classe será convertida em um descritor somente leitura, e BaseConfiguration implementará a lógica de construtor e mesclagem dessa opção de configuração. Uma função validadora utiliza um único valor não None para validar e gera uma exceção ou retorna esse valor (ou um valor equivalente). Um validador é chamado uma vez no momento da construção, mas somente se um valor não None para a opção de configuração for especificado, os argumentos de palavra-chave do construtor.

use_memcache

Um descritor para uma opção de configuração.

Essa classe é usada para criar uma opção de configuração em uma classe que herda de BaseConfiguration. Uma função validadora decorada com essa classe será convertida em um descritor somente leitura, e BaseConfiguration implementará a lógica de construtor e mesclagem dessa opção de configuração. Uma função validadora utiliza um único valor não None para validar e gera uma exceção ou retorna esse valor (ou um valor equivalente). Um validador é chamado uma vez no momento da construção, mas somente se um valor não None para a opção de configuração for especificado, os argumentos de palavra-chave do construtor.

class google.appengine.ext.ndb.TransactionOptionssource

Bases: google.appengine.ext.ndb.context.ContextOptions, google.appengine.datastore.datastore_rpc.TransactionOptions

Dê suporte a opções de contexto e transação.

class google.appengine.ext.ndb.AutoBatcher(todo_tasklet, limit)source

Bases: object

Agrupa várias chamadas assíncronas caso elas compartilhem as mesmas opções rpc.

Aqui está um exemplo para explicar o que essa classe faz.

Vida útil de uma chamada de API key.get_async(options): *) A chave recebe a instância de Context singleton e invoca Context.get. *) Context.get chama Context._get_batcher.add(key, options). Isso

retorna um "fut" futuro como o valor de retorno de key.get_async. Neste momento, key.get_async retorna.

*) Quando mais do que o número "limite" de _get_batcher.add() foi chamado,

_get_batcher invoca self._todo_tasklet dele, Context._get_tasklet, com a lista de chaves vistas até aqui.

*) Context._get_tasklet aciona MultiRPC e o aguarda. *) Na conclusão de MultiRPC, Context._get_tasklet passa os resultados

para o respectivo "fut" de key.get_async.

*) Caso o usuário chame "fut".get_result() antes do número "limite" de add() ter sido chamado,

"fut".get_result() chamarão repetidamente eventloop.run1().

*) Depois do processamento de retornos de chamada imediatos, eventloop executará idlers.

AutoBatcher._on_idle é um idler.

*) _on_idle executará "todo_tasklet" antes do lote estar cheio.

Dessa maneira, o mecanismo é todo_tasklet, que é uma tasklet proxy que pode combinar em lotes e passa resultados para futuros respectivos. Essa classe é basicamente um auxiliar que invoca todo_tasklet com os argumentos certos no momento certo.

action()source
add(arg, options=None)source

Adiciona um arg e recupera um futuro.

Parâmetros
  • arg: um argumento para _todo_tasklet.

  • options: opções de rpc.

Retorna

Uma instância de Future, representando o resultado da execução

_todo_tasklet sem lotes.

add_once(arg, options=None)source
flush(*args, **kwds)source
run_queue(options, todo)source

Execute efetivamente _todo_tasklet.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Python 2