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 do NDB para Blobstore. |
google.appengine.ext.ndb.context |
Classe Context. |
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-a para encapsular uma função de gerenciador de solicitações que será chamada por alguma biblioteca de aplicativos 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 para 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.
Exemployield 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 antecipado, é possível chamar mf.set_exception(), em vez de mf.complete(). Depois disso, não será mais possível 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.
No entanto, em vez de retornar resultados como uma lista, ele permite recuperar resultados assim que eles estão prontos, um de cada vez, usando getq(). O próprio "Future" termina com um resultado "None" quando o último resultado está pronto (independentemente de ter sido recuperado).
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 transmitir outra chave usando parent=<key>. Os pares (kind, id) da chave pai são inseridos antes dos pares (kind, id) serem transmitidos 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 igualidade entre chaves.
-
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 serializadas.
É melhor evitar Key subclasse. Seria difícil acertá-lo.
- app()Fonte
-
Retorne o ID do aplicativo.
- delete(**ctx_options)Fonte
-
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)Fonte
-
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)Fonte
-
Consiga de maneira síncrona a entidade dessa Key.
Retorne None, caso não haja essa entidade.
- get_async(**ctx_options)Fonte
-
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.
RetornaUm código de string ou inteiro ou None, caso a chave esteja incompleta.
- integer_id()Fonte
Retorne o código do inteiro no último par (kind, id), caso haja.
RetornaUm código de inteiro ou None, caso a chave tenha um código de string ou esteja incompleta.
- kind()Fonte
-
Retorne o tipo da entidade referenciada.
Este é o tipo do último par (kind, id).
- namespace()Fonte
-
Retorne o namespace.
- pairs()Fonte
-
Retorne uma tupla de pares (kind, id).
- parent()Fonte
-
Retorne um Key criado com base em todos, menos os últimos pares (kind, id).
Se houver apenas um par (kind, id), retorne None.
- reference()Fonte
-
Retorne o objeto Reference deste Key.
Esta é 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()Fonte
-
Retorne a chave raiz. Trata-se do próprio pai ou superior.
- serialized()Fonte
-
Retorne o objeto Reference serializado deste Key.
- string_id()Fonte
Retorne o código da string no último par (kind, id), caso haja.
RetornaUm código de string ou None, caso a chave tenha um código de inteiro ou esteja incompleta.
- to_old_key()Fonte
- urlsafe()Fonte
-
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/
Serializa para '<lat>,<lon>'. Gera BadValueError caso transmita uma string serializada inválida ou se lat e lon não forem 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 para fins de praticidade. Consulte datastore.RunInTransaction para ver 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)Fonte
- key_to_pb(key)Fonte
- pb_to_entity(pb)Fonte
- pb_to_index(pb)Fonte
- pb_to_key(pb)Fonte
- 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.
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
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.
-
namespace: namespace opcional
-
app: código do app opcional.
-
parent: chave da entidade pai, caso haja alguma.
-
context_options: objeto ContextOptions (não 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.
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()Fonte
-
Retorne se esta entidade tem uma chave concluída.
- key
-
Propriedade especial para armazenar a chave Model.
- populate(**kwds)Fonte
-
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.
RetornaA chave da entidade. Ela é sempre uma chave concluída.
- put_async(**ctx_options)Fonte
-
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().
Um objeto Query.
-
- to_dict(*args, **kwds)Fonte
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. Por padrão, inclui todos.
-
exclude: conjunto opcional de nomes de propriedade a serem pulados. Por padrão, não pula nenhum. 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
propagados, em que <flag> pode ser um dos seguintes: TransactionOptions.NESTED: inicia uma transação aninhada (é o
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).
RetornaO 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
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
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
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
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
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
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
RetornaUma 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
RetornaUm Future.
- google.appengine.ext.ndb.make_connection(config=None, default_model=None, _api_version=u'datastore_v3', _id_resolver=None)source
-
Crie um novo objeto Connection com o adaptador correto.
Opcionalmente, você 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 particular, _get_value() calls _get_user_value(), e _serialize() effectively calls _get_base_value().
Para armazenar um valor de usuário, basta chamar _store_value(). Para armazenar um valor de base, encapsule o valor em um _BaseValue() e chame _store_value().
Uma subclasse Property que quer implementar uma transformação específica entre valores do usuário e serializáveis precisa implementar dois métodos, _to_base_type() e _from_base_type(). Eles NÃO devem chamar o método super(). As superchamadas são administradas por _call_to_base_type() e _call_from_base_type(). É isso que significa as APIs serem compostas (ou empilháveis).
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):
-
"Valor de usuário lax para valor de usuário strict ". se não for isinstance(value, <top type>):
aumentar TypeError(…) # Ou datastore_errors.BadValueError(…).
- def _to_base_type(self, value):
-
"valor de usuário (Strict) para valor base." se isinstance(value, <user type>):
return <base type>(value)
- def _from_base_type(self, value):
-
"valor base para valor de usuário (strict)." se não for 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. Exemplo:
Employee.query(Employee.rank.IN([4, 5, 6]))
Observe que o método é chamado ._IN(), mas normalmente pode ser invocado como .IN(). ._IN() é fornecido para o caso em que uma StructuredProperty tem um modelo com 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 subentidade são indexados e podem ser consultados.
Consulte o docstring do módulo para detalhes.
- IN(value)Fonte
- 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.
Observe que nem todas as operações em Queries são compatíveis com instâncias _MultiQuery. As últimas são geradas conforme necessário quando qualquer um dos operadores !=, IN ou OR é usado.
- analyze()Fonte
-
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)Fonte
-
Associe valores de parâmetro. Retorna um novo objeto Query.
- count(*args, **kwds)Fonte
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)Fonte
-
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)Fonte
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.
Uma lista de resultados.
-
- fetch_async(*args, **kwds)Fonte
-
Busque uma lista de resultados da consulta, até um limite.
Trata-se da versão assíncrona de Query.fetch().
- fetch_page(*args, **kwds)Fonte
Busque uma página de resultados.
Este é um método especializado a ser usado paginando-se interfaces do usuário.
Parâmetrospage_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. Especificamente, para buscar a próxima página, transmita o cursor retornado por uma chamada para a próxima chamada usando start_cursor=<cursor>. Uma expressão comum é passar o cursor para o cliente usando <cursor>.to_websafe_string() e reconstruir esse cursor em uma solicitação subsequente usando Cursor.from_websafe_string(<string>).
RetornaUma 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)Fonte
-
Retorne uma nova consulta com filtros adicionais aplicados.
- filters
-
Acesso de filtros (Node ou None).
- get(**q_options)Fonte
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.
RetornaUm único resultado, ou None, caso não haja resultados.
- get_async(**q_options)Fonte
-
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)Fonte
Crie um iterador na consulta.
Parâmetros**q_options: todos os argumentos de palavra-chave das opções de consulta são aceitos.
RetornaUm objeto QueryIterator.
- kind
-
Acesso de tipo (uma string ou None).
- map(*args, **kwds)Fonte
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 Future 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 tasklets.MultiFuture para a implementação padrão e uma descrição do protocolo que o objeto merge_future deve implementar o padrão. Entre as alternativas do mesmo módulo estão QueueFuture, SerialQueueFuture e ReducingFuture.
RetornaQuando 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)Fonte
-
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)Fonte
-
Retorne uma nova consulta com pedidos de classificação adicionais aplicados.
- pedidos
-
Acesso de filtros (datastore_query.Order ou None).
- projeção
-
Acesso de propriedades projetadas (uma instância de tupla ou None).
- run_to_queue(*args, **kwds)Fonte
-
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 pelo 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.
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âmetroscursor: um cursor serializado conforme retornado por .to_bytes.
RetornaUm cursor.
Gera-
datastore_errors.BadValueError caso o argumento do cursor não represente um
-
cursor serializado.
-
- static from_websafe_string(cursor)Fonte
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âmetroscursor: um cursor serializado conforme retornado por .to_websafe_string.
RetornaUm cursor.
Gera-
datastore_errors.BadValueError se o argumento do cursor não for uma string
-
string ou não represente um cursor serializado.
-
- reversed()Fonte
-
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()Fonte
-
Serialize o cursor como uma string de bytes.
- to_websafe_string()Fonte
Serialize o cursor como uma string segura para a Web.
RetornaUm cursor serializado codificado em base64.
- urlsafe()Fonte
Serialize o cursor como uma string segura para a Web.
RetornaUm 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 product_cursors está definido, os métodos it.cursor_before() e it.cursor_after() retornam objetos Cursor correspondentes à posição da consulta imediatamente antes e depois do item retornado por it.next(). Antes de 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 de várias consultas na memória (ou seja, consultas que usam os operadores IN, != ou OR) não são compatíveis com opções de consulta.
- cursor_after()Fonte
-
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)Fonte
-
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()Fonte
-
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()Fonte
-
Protocolo do iterador: receba o próximo item ou gere StopIteration.
- probably_has_next()Fonte
-
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 booleano AND em dois ou mais nós.
- resolve(bindings, used)Fonte
- class google.appengine.ext.ndb.DisjunctionNodesource
-
Bases: google.appengine.ext.ndb.query.Node
Nó de árvore que representa um operador booleano OR em dois ou mais nós.
- resolve(bindings, used)Fonte
- 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.
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)Fonte
- 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)Fonte
- 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()Fonte
- resolve(bindings, used)Fonte
- values
- google.appengine.ext.ndb.gql(query_string, *args, **kwds)source
Analise uma string de consulta GQL.
Parâmetros-
query_string – Full GQL query, e.g. ‘SELECT * FROM Kind WHERE prop = 1’.
-
**kwds (*args,) –
Caso esteja presente, é usado para chamar bind().
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)Fonte
- call_on_commit(callback)Fonte
-
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
-
Apaga o cache na memória.
OBSERVAÇÃO: isso não afeta Memcache.
- static default_cache_policy(key)source
Política de cache padrão.
É deferida para _use_cache na classe Model.
Parâmetroskey: instância de Key
RetornaUm booleano ou None.
- static default_datastore_policy(key)source
Política de armazenamento de dados padrão.
É deferida para _use_datastore na classe Model.
Parâmetroskey: instância de Key
RetornaUm booleano ou None.
- static default_memcache_policy(key)source
Política de Memcache padrão.
É deferida para _use_memcache na classe Model.
Parâmetroskey: instância de Key
RetornaUm booleano ou None.
- static default_memcache_timeout_policy(key)source
Política de tempo limite de Memcache padrão.
É deferida para _memcache_timeout na classe Model.
Parâmetroskey: instância de Key
RetornaTempo limite de Memcache a ser usado (inteiro) ou None.
- delete(*args, **kwds)Fonte
- flush(*args, **kwds)Fonte
- get(*args, **kwds)Fonte
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
Uma instância de Model caso a chave exista no armazenamento de dados. Caso contrário, None.
-
- get_cache_policy()Fonte
Retorna a função de política de cache de contexto atual.
RetornaUma 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()Fonte
Retorna a função de política de armazenamento de dados de contexto atual.
RetornaUma 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)Fonte
- get_memcache_policy()Fonte
Retorna a função da política de Memcache atual.
RetornaUma 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()Fonte
-
Retorna a função da política atual para o tempo limite de Memcache (expiração).
- in_transaction()Fonte
-
Informa se uma transação está ativa no momento.
- iter_query(*args, **kwds)Fonte
- map_query(*args, **kwds)Fonte
- memcache_add(key, value, time=0, namespace=None, deadline=None)Fonte
- memcache_cas(key, value, time=0, namespace=None, deadline=None)Fonte
- memcache_decr(key, delta=1, initial_value=None, namespace=None, deadline=None)Fonte
- memcache_delete(key, seconds=0, namespace=None, deadline=None)Fonte
- memcache_get(key, for_cas=False, namespace=None, use_cache=False, deadline=None)Fonte
Um wrapper de lote automático para memcache.get() ou .get_multi().
Parâmetros-
key: chave a ser definida (precisa ser uma string e 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 (!) em que o valor de retorno é o valor recuperado do memcache ou None.
-
- memcache_gets(key, namespace=None, use_cache=False, deadline=None)Fonte
- memcache_incr(key, delta=1, initial_value=None, namespace=None, deadline=None)Fonte
- memcache_replace(key, value, time=0, namespace=None, deadline=None)Fonte
- memcache_set(key, value, time=0, namespace=None, use_cache=False, deadline=None)Fonte
- put(*args, **kwds)Fonte
- set_cache_policy(func)Fonte
Define a função da política de cache de contexto.
Parâmetrosfunc: 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)Fonte
Define a função da política do armazenamento de dados de contexto.
Parâmetrosfunc: 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)Fonte
Define a função da política de Memcache.
Parâmetrosfunc: 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)Fonte
Define a função da política para tempo limite de Memcache (expiração).
Parâmetrosfunc: 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)Fonte
- urlfetch(*args, **kwds)Fonte
- 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
Aceita opções de contexto e de 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 de 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 é retornado.
- *) 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á eventloop.run1() repetidamente.
- *) 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)Fonte
Adiciona um arg e recupera um futuro.
Parâmetros-
arg: um argumento para _todo_tasklet
-
options: opções de rpc
- Uma instância de Future, representando o resultado da execução
-
_todo_tasklet sem lotes.
-
- add_once(arg, options=None)Fonte
- flush(*args, **kwds)Fonte
- run_queue(options, todo)Fonte
-
Executa _todo_tasklet efetivamente.