Pacote google.appengine.ext.db

Resumo

Camada de abstração de banco de dados simples baseada em esquema para o armazenamento de dados.

Modelada após a camada de abstração do Django sobre os bancos de dados SQL, http://www.djangoproject.com/documentation/mode_api/. O nosso é um pouco mais simples e com muito menos código porque o armazenamento de dados é muito menos complexo do que os bancos de dados SQL.

O modelo de programação precisa declarar subclasses do Python da classe Model, declarando propriedades do armazenamento de dados como membros dessa classe. Dessa maneira, se quisesse publicar uma história com título, corpo e data de criação, você faria assim:

classe Story(db.Model):

title = db.StringProperty() body = db.TextProperty() created = db.DateTimeProperty(auto_now_add=True)

Crie uma nova Story no armazenamento de dados com esse padrão de uso:

story = Story(title=’My title’) story.body = ‘My body’ story.put()

Consulte entidades Story usando interfaces de consulta internas mapeadas diretamente para a sintaxe e a semântica do armazenamento de dados:

stories = Story.all().filter(‘date >=’, yesterday).order(‘-date’) for story in stories:

print story.title

As declarações de Property impõem tipos executando validação na atribuição. Por exemplo, a DateTimeProperty impõe a atribuição de objetos datetime válidos e, se fornecer a opção “obrigatória” para uma propriedade, você não poderá atribuir None a essa propriedade.

Também aceitamos referências entre modelos. Dessa maneira, se uma história tivesse comentários, você a representaria assim:

classe Comment(db.Model):

story = db.ReferenceProperty(Story) body = db.TextProperty()

Quando você consegue uma história do armazenamento de dados, a referência da história é resolvida automaticamente na primeira vez em que é referenciada, o que facilita o uso de instâncias de modelo sem executar outras consultas manualmente:

comment = Comment.get(key) print comment.story.title

Da mesma maneira, acesse o conjunto de comentários que se referem a cada história por meio dessa propriedade por uma referência reversa chamada comment_set, que é uma Query pré-configurada para retornar todos os comentários correspondentes:

story = Story.get(key) for comment in story.comment_set:

print comment.body

Submódulos

google.appengine.ext.db.metadata

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

google.appengine.ext.db.polymodel

Suporte para modelos e consultas polimórficas.

google.appengine.ext.db.stats

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

Índice

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

Bases: google.appengine.ext.db.UnindexedProperty

Uma string de byte que pode ter mais de 1.500 bytes.

data_type

alias de Blob

class google.appengine.ext.db.BooleanProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db.Property

Uma propriedade booleana.

data_type

alias de bool

empty(value)source

A propriedade booleana está vazia.

False não é um valor vazio.

Retorna

True se o valor for None, ou False.

validate(value)source

Valide o booleano.

Retorna

Um valor válido.

Gera

BadValueError caso a propriedade não seja instância de "bool".

class google.appengine.ext.db.ByteStringProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db.Property

Uma string de byte (<=1.500 bytes) curta.

Este tipo é usado em valores binários curtos que precisam ser indexados. Se você não precisar de indexação (independentemente do comprimento), use BlobProperty.

MAX_LENGTH = 1500
data_type

alias de ByteString

validate(value)source

Valide a propriedade ByteString.

Retorna

Um valor válido.

Gera

BadValueError caso a propriedade não seja uma instância de "ByteString".

class google.appengine.ext.db.CategoryProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db._CoercingProperty

Uma propriedade com valores que são instâncias de Category.

data_type

alias de Category

class google.appengine.ext.db.ComputedProperty(value_function, indexed=True)source

Bases: google.appengine.ext.db.Property

Property usada para criar propriedades derivadas de outros valores.

Determinados atributos jamais precisam ser definidos por usuários, mas calculados automaticamente em tempo de execução com base em outros valores da mesma entidade. Esses valores são implementados como propriedades persistentes porque fornecem teclas de pesquisa úteis.

Uma propriedade computada se comporta da mesma maneira que propriedades normais, exceto por você não poder definir valores nelas. A tentativa de fazer isso gera db.DerivedPropertyError que db.Model sabe ignorar durante o tempo de carregamento da entidade. Sempre que getattr é usado na propriedade, o valor é recalculado. Isso acontece quando o modelo chama get_value_for_datastore na propriedade.

Exemplo

import string

class Person(Model):

name = StringProperty(required=True)

@db.ComputedProperty def lower_case_name(self):

return self.name.lower()

# Encontre todas as pessoas, independentemente do caso usado em name. Person.gql(‘WHERE lower_case_name=:1’ % name_to_search_for.lower())

exception google.appengine.ext.db.ConfigurationErrorsource

Bases: google.appengine.api.datastore_errors.Error

Gerado quando uma propriedade ou um modelo está configurado incorretamente.

class google.appengine.ext.db.DateProperty(verbose_name=None, auto_now=False, auto_now_add=False, **kwds)source

Bases: google.appengine.ext.db.DateTimeProperty

Uma propriedade de data, que armazena uma data sem hora.

data_type

alias de date

get_updated_value_for_datastore(model_instance)source

Recebe um novo valor para a propriedade a ser enviada ao armazenamento de dados.

Retorna

now() conforme apropriado para a instância de data no caso ímpar em que auto_now está definido como True, ou AUTO_UPDATE_UNCHANGED.

get_value_for_datastore(model_instance)source

Recebe valor da propriedade a ser enviada ao armazenamento de dados.

Recuperamos uma datetime.date da instância do modelo e retornamos uma instância de datetime.datetime com a hora definida como zero.

Consulte a documentação do método da classe base para detalhes.

make_value_from_datastore(value)source

Representação nativa dessa propriedade.

Recebemos uma datetime.datetime recuperada da entidade e retornamos uma instância de datetime.date que representa a parte de data.

Consulte a documentação do método da classe base para detalhes.

static now()source

Receba now como um valor de data e hora.

Retorna

Somente a parte "date" de "now".

validate(value)source

Valide a data.

Retorna

Um valor válido.

Gera
  • BadValueError caso a propriedade não seja uma instância de "date"

  • ou caso seja uma instância de "datetime" (que é uma subclasse

  • de "date", mas para todos os efeitos práticos, um tipo diferente).

class google.appengine.ext.db.DateTimeProperty(verbose_name=None, auto_now=False, auto_now_add=False, **kwds)source

Bases: google.appengine.ext.db.Property

A classe base de todas as nossas propriedades de data/hora.

Processamos operações comuns, como a conversão entre tuplas de time e instâncias de datetime.

data_type

alias de datetime

default_value()source

Valor padrão de datetime.

Retorna

valor de now() conforme apropriado para a instância de date-time, caso auto_now ou auto_now_add esteja definido, ou a implementação do valor configurado pelo usuário.

get_updated_value_for_datastore(model_instance)source

Recebe um novo valor para a propriedade a ser enviada ao armazenamento de dados.

Retorna

now() conforme apropriado para a instância de date-time no caso raro em que auto_now está definido como True, ou AUTO_UPDATE_UNCHANGED.

static now()source

Recebe now como um valor de data e hora inteiro.

Retorna

"now" como um carimbo de data/hora inteiro, inclusive hora e data.

validate(value)source

Valide a data e a hora.

Retorna

Um valor válido.

Gera

BadValueError caso a propriedade não seja uma instância de "datetime".

exception google.appengine.ext.db.DerivedPropertyErrorsource

Bases: google.appengine.api.datastore_errors.Error

Gerado durante a tentativa de atribuir um valor a uma propriedade derivada.

exception google.appengine.ext.db.DuplicatePropertyErrorsource

Bases: google.appengine.api.datastore_errors.Error

Gerado quando uma propriedade está duplicada em uma definição de modelo.

class google.appengine.ext.db.EmailProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db._CoercingProperty

Uma propriedade com valores que são instâncias de Email.

data_type

alias de Email

class google.appengine.ext.db.Expando(parent=None, key_name=None, _app=None, **kwds)source

Bases: google.appengine.ext.db.Model

Modelo expansível dinamicamente.

Um Expando não exige definição de quaisquer propriedades para ser usado para armazenar informações no armazenamento de dados. Ainda assim, essa definição pode trazer benefícios. As propriedades podem ser adicionadas a um objeto expando com a execução de uma atribuição. A atribuição de propriedades é feita instância por instância. Dessa maneira, é possível que um objeto de um tipo expando tenha propriedades diferentes de outro ou até as mesmas propriedades com tipos diferentes. Ainda é possível definir propriedades em um expando, o que permite que essas propriedades se comportem da mesma maneira que em qualquer outro modelo.

Exemplo

import datetime

classe Song(db.Expando):

título = db.StringProperty()

crazy = Song(title=’Crazy like a diamond’,

author=’Lucy Sky’, publish_date=’yesterday’, rating=5.0)

hoboken = Song(title=’The man from Hoboken’,

author=[‘Anthony’, ‘Lou’], publish_date=datetime.datetime(1977, 5, 3))

crazy.last_minute_note=db.Text(‘Get a train to the station.’)

Usos possíveis:

Um uso de um expando é criar um objeto sem estrutura específica e, mais tarde, quando o aplicativo evoluir e estiver no estado certo, alterá-lo para um objeto de modelo normal e definir propriedades explícitas.

Exceções adicionais para expando:

Atributos protegidos (aqueles com nomes que começam com '_') não podem ser usados como propriedades dinâmicas. Esses são nomes reservados para atributos temporários protegidos (não persistentes).

Ordem de pesquisa:

Durante a tentativa de definir ou acessar um valor de atributo, qualquer outra propriedade definida, como métodos e outros valores em __dict__, tem precedência em relação aos valores no armazenamento de dados.

1 - Como não é possível para o armazenamento de dados saber que tipo de

propriedade armazenar em um valor expando indefinido, definir uma propriedade como None é o mesmo que excluí-la do expando.

2 - As variáveis persistentes em Expando não precisam começar com '_'. Essas

variáveis são consideradas "protegidas" no Python e são usadas internamente.

3 - As propriedades dinâmicas de Expando não podem armazenar listas vazias.

A tentativa de atribuir uma lista vazia a uma propriedade dinâmica vai gerar ValueError. As propriedades Static em Expando ainda podem aceitar listas vazias, mas como propriedades Model normais, com uso de None restrito.

dynamic_properties()source

Determine quais propriedades são específicas da instância da entidade.

Retorna

Conjunto de nomes que correspondem apenas às propriedades dinâmicas.

class google.appengine.ext.db.FloatProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db.Property

Uma propriedade float.

data_type

alias de float

empty(value)source

A propriedade float está vazia.

0.0 não é um valor vazio.

Retorna

True se o valor for None, ou False.

validate(value)source

Valide o float

Retorna

Um valor válido.

Gera

BadValueError caso a propriedade não seja uma instância de "float".

class google.appengine.ext.db.GeoPtProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db._CoercingProperty

Uma propriedade com valores que são instâncias de GeoPt.

data_type

alias de GeoPt

class google.appengine.ext.db.GqlQuery(query_string, *args, **kwds)source

Bases: google.appengine.ext.db._BaseQuery

Uma classe Query que usa a sintaxe de consulta GQL, em vez de .filter() etc.

bind(*args, **kwds)source

Vincule argumentos (posicionais ou de palavra-chave) à consulta.

Você também pode passar argumentos diretamente para o construtor de consultas. Sempre que você chama bind(), o conjunto anterior de argumentos é substituído pelo novo conjunto. Isso é útil por causa do trabalho árduo na análise da consulta. Dessa maneira, se precisar usar a mesma consulta com conjuntos diferentes de argumentos, você sempre precisará manter o objeto GqlQuery() e chamar bind() nele.

Parâmetros
  • *args: argumentos posicionais usados para vincular referências numéricas na consulta.

  • **kwds: argumentos baseados no dicionário para referências nomeadas.

is_distinct()source
is_keys_only()source
projection()source
run(**kwargs)source

Iterador desta consulta que processa a propriedade da cláusula LIMIT.

Se a string de consulta GQL contiver uma cláusula LIMIT, essa função buscará todos os resultados antes de retornar um iterador. Do contrário, os resultados são recuperados em lotes pelo iterador.

Parâmetros

kwargs: quaisquer argumentos de palavra-chave aceitos por datastore_query.QueryOptions().

Retorna

Iterador desta consulta.

class google.appengine.ext.db.IMProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db._CoercingProperty

Uma propriedade com valores que são instâncias de IM.

data_type

alias de IM

class google.appengine.ext.db.Index(index_id, kind, has_ancestor, properties)source

Bases: google.appengine.api.datastore._BaseIndex

Um índice de armazenamento de dados.

has_ancestor()source

Indica se este é um índice de ancestral, um booleano.

id()source

Retorna o código do índice, um longo.

kind()source

Retorna o tipo de índice, uma string. String vazia (''), caso não haja nenhuma.

properties()source

Retorna as propriedades do índice. Uma tupla de (nome do índice como uma string, [ASCENDING|DESCENDING]).

class google.appengine.ext.db.IntegerProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db.Property

Uma propriedade de número inteiro.

data_type

alias de int

empty(value)source

A propriedade integer está vazia.

0 não é um valor vazio.

Retorna

True se o valor for None, ou False.

validate(value)source

Valide a propriedade integer.

Retorna

Um valor válido.

Gera

BadValueError caso o valor não seja um inteiro ou uma instância longa.

google.appengine.ext.db.KEY_RANGE_COLLISION = 'Collision'source

Indica que já existem entidades com chaves dentro do intervalo de chaves indicado e que gravar nesse intervalo substituirá essas entidades. Além disso, as implicações de KEY_RANGE_COLLISION se aplicam. Se a substituição de entidades existentes nesse intervalo for aceitável, será seguro usar o intervalo indicado.

O alocador de código automático do armazenamento de dados jamais atribuirá uma chave a uma nova entidade que substituirá uma entidade existente. Dessa maneira, as entidades gravadas pelo usuário nesse intervalo jamais serão substituídas por uma entidade com uma chave atribuída automaticamente.

google.appengine.ext.db.KEY_RANGE_CONTENTION = 'Contention'source

Indica que o intervalo de chaves indicado está vazio, mas o alocador de código automático do armazenamento de dados pode atribuir novas chaves de entidades nesse intervalo. Porém, é seguro atribuir manualmente chaves nesse intervalo caso uma das seguintes opções seja verdadeira:

  • Nenhuma outra solicitação vai inserir entidades com o mesmo tipo e pai do intervalo de chaves indicado até que todas as entidades com chaves atribuídas manualmente desse intervalo tenham sido gravadas.

  • A substituição de entidades gravadas por outras solicitações com os mesmos tipo e pai do intervalo de chaves indicado é aceitável.

O alocador de código automático do armazenamento de dados não atribuirá uma chave a uma nova entidade que substituirá uma entidade existente. Dessa maneira, depois que o intervalo for preenchido, não haverá mais contenção.

google.appengine.ext.db.KEY_RANGE_EMPTY = 'Empty'source

Indica que o intervalo de chaves indicado está vazio e que o alocador de códigos automático do armazenamento de dados não atribuirá chaves nesse intervalo a novas entidades.

exception google.appengine.ext.db.KindErrorsource

Bases: google.appengine.api.datastore_errors.BadValueError

Gerado quando uma entidade é usada com Model incorreto.

class google.appengine.ext.db.LinkProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db._CoercingProperty

Uma propriedade com valores que são instâncias de Link.

data_type

alias de Link

validate(value)source
class google.appengine.ext.db.ListProperty(item_type, verbose_name=None, default=None, write_empty_list=None, **kwds)source

Bases: google.appengine.ext.db.Property

Uma propriedade que armazena uma lista de elementos.

Esta é uma propriedade parametrizada. O parâmetro precisa ser um tipo de dados válido que não seja uma lista, e todos os itens precisam estar em conformidade com esse tipo.

data_type

alias de list

default_value()source

Valor padrão de list.

Como a propriedade fornecida para "default" é um valor estático, esse valor precisa ser copiado superficialmente para evitar que todos os campos com valores padrão compartilhem a mesma instância.

Retorna

Cópia do valor padrão.

empty(value)source

A propriedade list está vazia.

[] não é um valor vazio.

Retorna

True se o valor for None, ou False.

get_value_for_datastore(model_instance)source

Recebe valor da propriedade a ser enviada ao armazenamento de dados.

Retorna

lista validada apropriada para salvar no armazenamento de dados.

make_value_from_datastore(value)source

Representação nativa dessa propriedade.

Se essa for uma lista de datetime.date ou datetime.time, converteremos a lista de datetime.datetime recuperada da entidade em datetime.date ou datetime.time.

Consulte a documentação do método da classe base para detalhes.

make_value_from_datastore_index_value(index_value)source
validate(value)source

Valide a lista.

Retorna

Um valor válido.

Gera
  • BadValueError caso a propriedade não seja uma lista com itens que são instâncias do

  • item_type fornecido ao construtor.

validate_list_contents(value)source

Valida se todos os itens na lista são do tipo correto.

Retorna

A lista validada.

Gera
  • BadValueError caso a lista tenha itens que não são instâncias do

  • item_type fornecido ao construtor.

class google.appengine.ext.db.Model(parent=None, key_name=None, _app=None, _from_entity=False, **kwds)source

Bases: object

Model é a superclasse de todas as entidades de objeto no armazenamento de dados.

O modelo de programação precisa declarar subclasses do Python da classe Model, declarando propriedades do armazenamento de dados como membros dessa classe. Dessa maneira, se quisesse publicar uma história com título, corpo e data de criação, você faria assim:

classe Story(db.Model):

title = db.StringProperty() body = db.TextProperty() created = db.DateTimeProperty(auto_now_add=True)

Uma instância de modelo pode ter um único pai. As instâncias de modelo sem pai são entidades raiz. É possível consultar com eficiência instâncias pelos pais compartilhados delas. Todos os descendentes de uma única instância raiz também se comportam como um grupo de transações. Isso significa que, quando você trabalha com um membro do grupo em uma transação, todos os descendentes dessa raiz participam da transação. Todas as operações dentro de uma transação neste grupo são ACID.

classmethod all(**kwds)source

Retorna uma consulta em todas as instâncias desse modelo do armazenamento de dados.

Retorna

Consulta que recuperará todas as instâncias da coleção de entidades.

delete(**kwargs)source

Exclui essa entidade do armazenamento de dados.

Parâmetros

config: datastore_rpc.Configuration a ser usado para essa solicitação.

Gera

TransactionFailedError caso os dados não possam ser confirmados.

dynamic_properties()source

Retorna uma lista de todas as propriedades dinâmicas definidas para a instância.

classmethod entity_type()source

Alias a ser removido em breve para o tipo.

classmethod fields()source

Alias a ser removido em breve para as propriedades.

classmethod from_entity(entity)source

Converte a representação da entidade desse modelo em uma instância.

Converte instância datastore.Entity em instância de cls.

Parâmetros

entity: entidade carregada diretamente do armazenamento de dados.

Gera

KindError quando cls é um modelo incorreto da entidade.

classmethod get(keys, **kwargs)source

Busque a instância do armazenamento de dados de um tipo de modelo específico usando a chave.

Aceitamos objetos Key e chaves de string, que são convertidas em objetos Key automaticamente.

Isso é útil para garantir que tipos de instância específicos sejam recuperados do armazenamento de dados. Também ajuda o código-fonte a indicar claramente o tipo de objeto que está sendo recuperado. Exemplo:

story = Story.get(story_key)

Parâmetros
  • keys: chave dentro da coleção de entidades do armazenamento de dados a ser encontrada, chave de string ou lista de chaves ou de chaves de string.

  • config: datastore_rpc.Configuration a ser usado para essa solicitação.

Retorna

Uma instância de Model associada à chave da classe fornecida, caso ela exista no armazenamento de dados, ou None. Caso uma lista de chaves tenha sido fornecida: uma lista em que list[i] é a instância de Model para keys[i], ou None caso não haja instância.

Tipo de retorno

Caso uma única chave tenha sido fornecida

Gera
  • KindError caso algum dos objetos recuperados não seja instância do

  • tipo associado à chamada para "get".

classmethod get_by_id(ids, parent=None, **kwargs)source

Receba a instância da classe Model por código.

Parâmetros
  • key_names: um único código ou uma lista de códigos.

  • parent: pai de instâncias a serem recebidas. Pode ser um modelo ou uma chave.

  • config: datastore_rpc.Configuration a ser usado para essa solicitação.

classmethod get_by_key_name(key_names, parent=None, **kwargs)source

Receba a instância da classe Model por nome da chave.

Parâmetros
  • key_names: um único nome de chave ou uma lista de nomes de chave.

  • parent: pai de instâncias a serem recebidas. Pode ser um modelo ou uma chave.

  • config: datastore_rpc.Configuration a ser usado para essa solicitação.

classmethod get_or_insert(key_name, **kwds)source

Recupere ou crie de maneira transacional uma instância de classe Model.

Isso funciona de maneira muito semelhante ao método setdefault() do dicionário do Python, em que primeiro tentamos recuperar uma instância de Model com o nome da chave e o pai fornecidos. Caso não esteja presente, criamos uma nova instância (usando os *kwds fornecidos) e a inserimos com o nome da chave fornecido.

As chamadas subsequentes a esse método com o mesmo nome de chave e pai sempre produzirão a mesma entidade (mas não a mesma instância de objeto real), independentemente dos *kwds fornecidos. Se a entidade especificada tiver sido excluída separadamente de alguma forma, a próxima chamada criará uma nova entidade e a retornará.

Se o argumento de palavra-chave "parent" for fornecido, ele precisará ser uma instância de Model. Ele será usado como o pai da nova instância dessa classe Model, se um tiver sido criado.

Esse método é especialmente útil por ter apenas uma entidade exclusiva para um identificador específico. A inserção/recuperação é feita de maneira transacional, o que garante exclusividade.

Exemplo de uso:

classe WikiTopic(db.Model):

creation_date = db.DatetimeProperty(auto_now_add=True) body = db.TextProperty(required=True)

# Na primeira vez, criaremos o novo tópico. wiki_word = ‘CommonIdioms’ topic = WikiTopic.get_or_insert(wiki_word,

body=’This topic is totally new!’)

assert topic.key().name() == ‘CommonIdioms’ assert topic.body == ‘This topic is totally new!’

# Na segunda vez, apenas recuperaremos a entidade. overwrite_topic = WikiTopic.get_or_insert(wiki_word,

body=’A totally different message!’)

assert topic.key().name() == ‘CommonIdioms’ assert topic.body == ‘This topic is totally new!’

Parâmetros
  • key_name: nome da chave a ser recuperado ou criado.

  • **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 o pai já existir, o restante desses argumentos será descartado.

Retorna

A instância existente da classe Model com o key_name e o pai especificados ou uma nova, recém-criada.

Gera
  • TransactionFailedError caso a instância de Model especificada não possa ser

  • recuperada ou criada de maneira transacional (por causa da alta contenção etc).

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

Retorna uma consulta usando a string de consulta GQL.

Consulte appengine/ext/gql para mais informações sobre GQL.

Parâmetros
  • query_string: string de consulta GQL devidamente formatada com a parte "SELECT * FROM <entity>" omitida.

  • *args: restante dos argumentos posicionais usados para vincular referências numéricas na consulta.

  • **kwds: argumentos baseados em dicionário (para parâmetros nomeados).

has_key()source

Determine se esta instância de modelo tem uma chave completa.

Quando não se usa uma Key totalmente autoatribuída, os códigos não são atribuídos até os dados serem salvos no armazenamento de dados, mas instâncias com um nome de chave sempre têm uma chave completa.

Retorna

True caso o objeto tenha sido mantido no armazenamento de dados ou tenha uma chave, ou key_name. Do contrário, False.

instance_properties()source

Alias de dyanmic_properties.

is_saved()source

Determine se a entidade é mantida no armazenamento de dados.

Novas instâncias de Model não começam salvas nos dados. Os objetos salvos ou carregados no armazenamento de dados terão um estado salvo True.

Retorna

True caso o objeto tenha sido mantido no armazenamento de dados. Do contrário, False.

key()source

Chave única para esta entidade.

Essa propriedade só estará disponível se essa entidade já estiver no armazenamento de dados ou se tiver uma chave completa. Dessa maneira, ela estará disponível se essa entidade buscada tiver sido retornada de uma consulta ou depois que put() for chamado pela primeira vez para novas entidades, ou se uma chave completa tiver sido fornecida quando construída.

Retorna

Chave do armazenamento de dados da entidade mantida.

Gera

NotSavedError quando a entidade não é mantida.

classmethod kind()source

Retorna o tipo de armazenamento de dados que usamos neste modelo.

Usamos apenas o nome do modelo por enquanto, ignorando possíveis colisões.

parent()source

Receba o pai da instância do modelo.

Retorna

Pai da entidade contida ou pai fornecido no construtor. None caso a instância não tenha pai.

parent_key()source

Receba a chave do pai.

Esse método é útil para evitar uma possível busca no armazenamento de dados, mas ainda assim receber informações sobre o pai das instâncias.

Retorna

Chave pai da entidade. None, caso não haja pai.

classmethod properties()source

Retorna um dicionário de todas as propriedades definidas para este modelo.

put(**kwargs)source

Grava essa instância de modelo no armazenamento de dados.

Caso essa instância seja nova, adicionaremos uma entidade ao armazenamento de dados. Do contrário, atualizaremos essa instância, e a chave permanecerá a mesma.

Parâmetros

config: datastore_rpc.Configuration a ser usado para essa solicitação.

Retorna

A chave da instância (existente ou nova).

Gera

TransactionFailedError caso os dados não possam ser confirmados.

save(**kwargs)source

Grava essa instância de modelo no armazenamento de dados.

Caso essa instância seja nova, adicionaremos uma entidade ao armazenamento de dados. Do contrário, atualizaremos essa instância, e a chave permanecerá a mesma.

Parâmetros

config: datastore_rpc.Configuration a ser usado para essa solicitação.

Retorna

A chave da instância (existente ou nova).

Gera

TransactionFailedError caso os dados não possam ser confirmados.

to_xml(_entity_class=google.appengine.api.datastore.Entity)source

Gere uma representação XML dessa instância do modelo.

As propriedades atom e gd:namespace são convertidas em XML, de acordo com os respectivos esquemas delas. Veja mais informações em:

http://www.atomenabled.org/developers/syndication/ https://developers.google.com/gdata/docs/1.0/elements

exception google.appengine.ext.db.NotSavedErrorsource

Bases: google.appengine.api.datastore_errors.Error

Gerado quando uma ação de objeto salvo é executada em um objeto não salvo.

class google.appengine.ext.db.PhoneNumberProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db._CoercingProperty

Uma propriedade com valores que são instâncias de PhoneNumber.

data_type

alias de PhoneNumber

class google.appengine.ext.db.PostalAddressProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db._CoercingProperty

Uma propriedade com valores que são instâncias de PostalAddress.

data_type

alias de PostalAddress

class google.appengine.ext.db.PropertiedClass(name, bases, dct, map_kind=True)source

Bases: type

Metaclasse para inicializar propriedades da classe Model.

Usado para inicializar propriedades definidas no contexto de um modelo. Com o uso de uma metaclasse, boa parte da configuração de um descritor Property se torna implícita. Quando essa metaclasse é usada, os descritores da classe Model são notificados sobre a que classe eles pertencem e a que atributo eles estão associados e podem fazer a inicialização apropriada por meio de __property_config__.

As propriedades duplicadas não são permitidas.

class google.appengine.ext.db.Property(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: object

Property é um atributo de um Model.

Ele define o tipo do atributo, que determina como ele é colocado no armazenamento de dados e como os valores da propriedade são validados. Tipos diferentes de propriedade aceitam opções distintas, que alteram regras de validação, valores padrão etc. O exemplo mais simples de propriedade é uma StringProperty:

classe Story(db.Model):

título = db.StringProperty()

creation_counter = 41
data_type

alias de str

datastore_type()source

Método de acesso compatível com versões anteriores obsoletas para self.data_type.

default_value()source

Valor padrão para valores não atribuídos.

Retorna

Valor padrão fornecido por __init __ (padrão).

empty(value)source

Determine se o valor está vazio no contexto dessa propriedade.

Para a maioria dos tipos, isso equivale a "não valor", mas para tipos como bool, o teste é mais sutil. Dessa maneira, as subclasses poderão substituir esse método, se necessário.

Parâmetros

value: valor a ser validado em relação a esta propriedade.

Retorna

True caso esse valor seja considerado vazio no contexto desse tipo de propriedade. Do contrário, False.

get_updated_value_for_datastore(model_instance)source

Determine o novo valor para a propriedade atualizada automaticamente.

Algumas propriedades (por exemplo, DateTimeProperty, UserProperty) podem atualizar opcionalmente o valor delas em cada put(). Essa chamada precisa retornar o novo valor desejado para essas propriedades. Para todas as outras propriedades, essa chamada precisa retornar AUTO_UPDATE_UNCHANGED.

Parâmetros

model_instance: instância para receber o novo valor.

Retorna

Representação do armazenamento de dados do novo valor de modelo em um formato apropriado para o armazenamento de dados ou AUTO_UPDATE_UNCHANGED.

get_value_for_datastore(model_instance)source

Representação do armazenamento de dados dessa propriedade.

Procura essa propriedade na instância de modelo fornecida e retorna a representação do armazenamento de dados apropriada do valor que pode estar em uma entidade de armazenamento de dados. De maneira mais crítica, ele buscará o valor da chave do armazenamento de dados para propriedades de referência.

Algumas propriedades (por exemplo, DateTimeProperty, UserProperty) podem atualizar opcionalmente o valor delas em cada put(). Essa chamada precisa retornar o valor atual dessas propriedades (get_updated_value_for_datastore retorna o novo valor).

Parâmetros

model_instance: instância para buscar o valor do armazenamento de dados.

Retorna

Representação do armazenamento de dados do valor de modelo em um formato apropriado para o armazenamento de dados.

make_value_from_datastore(value)source

Representação nativa dessa propriedade.

Dado um valor recuperado de uma entidade de armazenamento de dados, retorne um valor, possivelmente convertido, a ser armazenado na instância do modelo. Isso normalmente retorna o valor inalterado, mas uma classe de propriedade pode modificar isso ao usar um tipo de dados na instância do modelo que é diferente do tipo na entidade.

Essa API não é bem simétrica com get_value_for_datastore(), porque a instância de modelo na qual armazenar o valor convertido talvez não exista ainda. Podemos coletar valores a serem passados para um construtor de modelos.

Parâmetros

value: valor recuperado da entidade do armazenamento de dados.

Retorna

O valor convertido a ser usado como um atributo da instância de modelo.

make_value_from_datastore_index_value(index_value)source
validate(value)source

Declare que o valor fornecido é compatível com essa propriedade.

Parâmetros

value: valor a ser validado em relação a esta propriedade.

Retorna

Um valor válido, a entrada inalterada ou adaptada ao tipo obrigatório.

Gera
  • BadValueError caso o valor não seja apropriado para esta

  • propriedade de alguma forma.

exception google.appengine.ext.db.PropertyErrorsource

Bases: google.appengine.api.datastore_errors.Error

Gerado quando a propriedade não existente é referenciada.

class google.appengine.ext.db.Query(model_class=None, keys_only=False, cursor=None, namespace=None, _app=None, distinct=False, projection=None)source

Bases: google.appengine.ext.db._BaseQuery

Uma instância de Query consulta instâncias de Models.

Você cria uma consulta com uma classe de modelo assim:

classe Story(db.Model):

title = db.StringProperty() date = db.DateTimeProperty()

query = Query(Story)

Você modifica uma consulta com filtros e ordens assim:

query.filter(‘title =’, ‘Foo’) query.order(‘-date’) query.ancestor(key_or_model_instance)

Cada consulta pode retornar um iterador. Dessa maneira, você acessa os resultados de uma consulta iterando-a:

para a história na consulta:

print story.title

Por praticidade, todos os métodos de filtragem e ordenação retornam "self". Dessa maneira, o jeito mais fácil de usar a interface de consulta é colocar em cascata todos os filtros e as ordens na linha do iterador assim:

for story in Query(story).filter(‘title =’, ‘Foo’).order(‘-date’):

print story.title

ancestor(ancestor)source

Define um ancestral para esta consulta.

Isso restringe a consulta a retornar apenas resultados descendentes de uma determinada instância de modelo. Em outras palavras, todos os resultados terão o ancestral como pai ou pai do pai etc. O ancestral também é um possível resultado.

Parâmetros

ancestor: Model ou Key (já salvos)

Retorna

O próprio parâmetro para aceitar o encadeamento de métodos.

Gera
  • TypeError caso o argumento não seja um Key ou Model. NotSavedError

  • caso seja, mas ainda não esteja salvo.

filter(property_operator, value)source

Adicione filtro à consulta.

Parâmetros
  • property_operator: string com a propriedade e o operador para filtragem.

  • value: o valor do filtro.

Retorna

O próprio parâmetro para aceitar o encadeamento de métodos.

Gera

PropertyError caso a propriedade inválida seja fornecida.

is_distinct()source
is_keys_only()source
order(property)source

Defina a ordem do resultado da consulta.

Para usar ordem decrescente, acrescente "-" (sinal de subtração) ao nome da propriedade. Por exemplo, "-date", em vez de "date".

Parâmetros

property: propriedade para classificação.

Retorna

O próprio parâmetro para aceitar o encadeamento de métodos.

Gera

PropertyError caso a propriedade inválida seja fornecida.

projection()source
class google.appengine.ext.db.RatingProperty(verbose_name=None, name=None, default=None, required=False, validator=None, choices=None, indexed=True)source

Bases: google.appengine.ext.db._CoercingProperty, google.appengine.ext.db.IntegerProperty

Uma propriedade com valores que são instâncias de Rating.

data_type

alias de Rating

google.appengine.ext.db.Reference

alias de ReferenceProperty

class google.appengine.ext.db.ReferenceProperty(reference_class=None, verbose_name=None, collection_name=None, **attrs)source

Bases: google.appengine.ext.db.Property

Uma propriedade que representa uma referência de muitos para um a outro modelo.

Por exemplo, uma propriedade de referência no modelo A que se refere ao modelo B forma um relacionamento de muitos para um de A a B: toda instância de A se refere a uma única instância de B, e toda instância de B pode ter muitas instâncias de A que se referem a ela.

get_value_for_datastore(model_instance)source

Receba a chave de referência, em vez da própria referência.

make_value_from_datastore_index_value(index_value)source
validate(value)source

Valide a referência.

Retorna

Um valor válido.

Gera

BadValueError pelas seguintes razões: o valor não é salvo. O objeto não é do tipo de modelo correto para referência.

exception google.appengine.ext.db.ReservedWordErrorsource

Bases: google.appengine.api.datastore_errors.Error

Gerado quando uma propriedade é definida para uma palavra reservada.

google.appengine.ext.db.SelfReference(verbose_name=None, collection_name=None, **attrs)source

Crie uma autorreferência.

Função para declarar uma propriedade de autorreferência em um modelo.

Exemplo
classe HtmlNode(db.Model):

pai = db.SelfReferenceProperty(‘Parent’, ‘children’)

Parâmetros
  • verbose_name: nome da propriedade amigável.

  • collection_name: nome da coleção no modelo.

Gera

ConfigurationError caso reference_class seja fornecido como parâmetro.

google.appengine.ext.db.SelfReferenceProperty(verbose_name=None, collection_name=None, **attrs)source

Crie uma autorreferência.

Função para declarar uma propriedade de autorreferência em um modelo.

Exemplo
classe HtmlNode(db.Model):

pai = db.SelfReferenceProperty(‘Parent’, ‘children’)

Parâmetros
  • verbose_name: nome da propriedade amigável.

  • collection_name: nome da coleção no modelo.

Gera

ConfigurationError caso reference_class seja fornecido como parâmetro.

class google.appengine.ext.db.StringListProperty(verbose_name=None, default=None, write_empty_list=None, **kwds)source

Bases: google.appengine.ext.db.ListProperty

Uma propriedade que armazena uma lista de strings.

Uma forma abreviada do tipo mais comum de ListProperty.

class google.appengine.ext.db.StringProperty(verbose_name=None, multiline=False, **kwds)source

Bases: google.appengine.ext.db.Property

Uma propriedade textual, que pode ter uma ou várias linhas.

MAX_LENGTH = 1500
data_type

alias de basestring

validate(value)source

Valide a propriedade da string.

Retorna

Um valor válido.

Gera

BadValueError caso a propriedade não seja multilinha, mas o valor seja.

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

Bases: google.appengine.ext.db.UnindexedProperty

Uma string que pode ter mais de 1.500 bytes.

data_type

alias de Text

class google.appengine.ext.db.TimeProperty(verbose_name=None, auto_now=False, auto_now_add=False, **kwds)source

Bases: google.appengine.ext.db.DateTimeProperty

Uma propriedade de hora, que armazena uma hora sem uma data.

data_type

alias de time

empty(value)source

A propriedade time está vazia.

"0.0" (meia-noite) não é um valor vazio.

Retorna

True se o valor for None, ou False.

get_updated_value_for_datastore(model_instance)source

Recebe um novo valor para a propriedade a ser enviada ao armazenamento de dados.

Retorna

now() conforme apropriado para a instância de hora no caso raro em que auto_now está definido como True, ou AUTO_UPDATE_UNCHANGED.

get_value_for_datastore(model_instance)source

Recebe valor da propriedade a ser enviada ao armazenamento de dados.

Recuperamos uma datetime.date da instância do modelo e retornamos uma instância de datetime.datetime com a data definida como 01/01/1970.

Consulte a documentação do método da classe base para detalhes.

make_value_from_datastore(value)source

Representação nativa dessa propriedade.

Recebemos uma datetime.datetime recuperada da entidade e retornamos uma instância de datetime.date que representa a parte de hora.

Consulte a documentação do método da classe base para detalhes.

static now()source

Recebe now como um valor time datetime.

Retorna

Parte "time" somente de "now".

google.appengine.ext.db.URLProperty

alias de LinkProperty

class google.appengine.ext.db.UnindexedProperty(*args, **kwds)source

Bases: google.appengine.ext.db.Property

Uma propriedade não indexada por índices internos ou compostos.

TextProperty e BlobProperty derivam dessa classe.

validate(value)source

Valide a propriedade.

Retorna

Um valor válido.

Gera

BadValueError caso a propriedade não seja instância de data_type.

class google.appengine.ext.db.UserProperty(verbose_name=None, name=None, required=False, validator=None, choices=None, auto_current_user=False, auto_current_user_add=False, indexed=True)source

Bases: google.appengine.ext.db.Property

Uma propriedade usar.

data_type

alias de User

default_value()source

Valor padrão do usuário.

Retorna

Valor de users.get_current_user() caso auto_current_user ou auto_current_user_add esteja definido, ou None. Mas não na implementação padrão, porque não aceitamos o argumento de palavra-chave "default".

get_updated_value_for_datastore(model_instance)source

Recebe um novo valor para a propriedade a ser enviada ao armazenamento de dados.

Retorna

Valor de users.get_current_user() caso auto_current_user esteja definido, ou AUTO_UPDATE_UNCHANGED.

validate(value)source

Valide o usuário.

Retorna

Um valor válido.

Gera

BadValueError caso a propriedade não seja uma instância de "User".

google.appengine.ext.db.allocate_id_range(model, start, end, **kwargs)source

Aloca um intervalo de códigos com pontos de extremidade específicos.

Depois que esses códigos tiverem sido alocados, eles poderão ser fornecidos manualmente para entidades recém-criadas.

Como o alocador de códigos automático do armazenamento de dados jamais atribuirá uma chave a uma nova entidade que fará uma existente ser substituída, as entidades gravadas no intervalo de chaves especificado nunca serão substituídas. Porém, criar entidades com chaves atribuídas manualmente neste intervalo pode substituir entidades existentes (ou novas entidades criadas por uma solicitação separada) dependendo do estado do intervalo de chaves retornado.

Esse método só será usado se você tiver um intervalo de códigos numéricos existente que quiser reservar, como entidades de carregamento em massa que já tenham códigos. Se você não se preocupar com códigos recebidos, use allocate_ids().

Parâmetros
  • model: instância de Model, Key ou string a ser veiculada como um modelo que especifica a sequência na qual alocar códigos. Os códigos alocados só precisam ser usados em entidades com o mesmo pai (se houver) e o tipo dessa chave.

  • start: primeiro código do intervalo a ser alocado, inclusive.

  • end: último código do intervalo a ser alocado, inclusive.

  • config: datastore_rpc.Configuration a ser usado para essa solicitação.

Retorna

Um de (KEY_RANGE_EMPTY, KEY_RANGE_CONTENTION, KEY_RANGE_COLLISION). Se não for KEY_RANGE_EMPTY, ele representará um problema em potencial no uso do intervalo de chaves alocado.

google.appengine.ext.db.allocate_ids(model, size, **kwargs)source

Aloca um intervalo de códigos de tamanho do model_key definido por modelo.

Aloca um intervalo de códigos no armazenamento de dados. Dessa maneira, esses códigos não serão atribuídos automaticamente a novas entidades. Só é possível alocar IDs para chaves de modelo do seu aplicativo. Caso haja um erro, gera uma subclasse de datastore_errors.Error.

Parâmetros
  • model: instância de Model, Key ou string a ser veiculada como um modelo que especifica a sequência na qual alocar códigos. Os códigos retornados só precisam ser usados em entidades com o mesmo pai (se houver) e o tipo dessa chave.

  • size: número de códigos a serem alocados.

  • config: datastore_rpc.Configuration a ser usado para essa solicitação.

Retorna

(start, end) do intervalo alocado, inclusive.

google.appengine.ext.db.allocate_ids_async(model, size, **kwargs)source

Aloca de maneira assíncrona um intervalo de códigos.

Idêntico a allocate_ids(), exceto por retornar um objeto assíncrono. Chame get_result () no valor de retorno a ser bloqueado na chamada e retorne o resultado.

google.appengine.ext.db.check_reserved_word(attr_name)source

Gere uma exceção caso o nome do atributo seja uma palavra reservada.

Parâmetros

attr_name: nome a ser verificado caso ela seja uma palavra reservada.

Gera

ReservedWordError quando se determina que attr_name é uma palavra reservada.

google.appengine.ext.db.class_for_kind(kind)source

Retorna a classe base responsável por implementar o tipo.

Necessário para recuperar a classe responsável por implementar o tipo fornecido.

Parâmetros

kind: string do tipo de entidade.

Retorna

Implementação da classe do tipo.

Gera

KindError quando não há implementação do tipo.

google.appengine.ext.db.create_rpc(deadline=None, callback=None, read_policy=0)source

Crie uma RPC a ser usada na configuração de chamadas do armazenamento de dados.

OBSERVAÇÃO: esta função existe para compatibilidade com versões anteriores. Use create_config() em vez disso. OBSERVAÇÃO: este último usa "on_completion", uma função que utiliza um argumento, e create_rpc usa "callback", que é uma função sem argumentos.

Parâmetros
  • deadline: flutuante, prazo para chamadas em segundos.

  • callback: chamável, um retorno de chamada acionado quando esta RPC é concluída. Aceita um argumento, que é a RPC retornada.

  • read_policy: sinalização, definida como EVENTUAL_CONSISTENCY, para ativar leituras com consistência eventual.

Retorna

Uma instância de datastore.DatastoreRPC.

google.appengine.ext.db.delete(models, **kwargs)source

Exclua uma ou mais instâncias de Model.

Parâmetros
  • models: instância de Model, chave, string de chave ou iterável.

  • config: datastore_rpc.Configuration a ser usado para essa solicitação. Precisa ser especificado como um argumento de palavra-chave.

Gera

TransactionFailedError caso os dados não possam ser confirmados.

google.appengine.ext.db.delete_async(models, **kwargs)source

Versão assíncrona de exclusão de uma ou mais instâncias de Model.

Idêntica a db.delete(), exceto por retornar um objeto assíncrono. Chame get_result() no valor de retorno para bloqueio na chamada.

google.appengine.ext.db.get(keys, **kwargs)source

Busque a instância de Model específica com a chave fornecida do armazenamento de dados.

Aceitamos objetos Key e chaves de string, que são convertidas em objetos Key automaticamente.

Parâmetros
  • keys: chave dentro da coleção de entidades do armazenamento de dados a ser encontrada, chave de string ou lista de chaves ou de chaves de string.

  • config: datastore_rpc.Configuration a ser usado para essa solicitação. Precisa ser especificado como um argumento de palavra-chave.

  • Retorna: uma instância de Model associada à chave, caso ela exista no armazenamento de dados e uma única chave tenha sido fornecida. Do contrário, None. Caso uma lista de chaves tenha sido fornecida: uma lista em que list[i] é a instância de Model para keys[i], ou None caso não haja instância.

google.appengine.ext.db.get_async(keys, **kwargs)source

Busque de maneira assíncrona as instâncias de Model especificadas no armazenamento de dados.

Idêntico a db.get(), exceto por retornar um objeto assíncrono. Chame get_result() no valor de retorno a ser bloqueado na chamada e receba os resultados.

google.appengine.ext.db.get_indexes(**kwargs)source

Retorna os índices de aplicativo e os estados deles.

Parâmetros

config: datastore_rpc.Configuration a ser usado para essa solicitação. Precisa ser especificado como um argumento de palavra-chave.

Retorna

Uma lista (Index, Index.[BUILDING|SERVING|DELETING|ERROR]) Um índice pode estar nos seguintes estados:

Index.BUILDING: o índice está sendo criado e, portanto, não pode exibir consultas Index.SERVING: o índice está pronto para exibir consultas Index.DELETING: o índice está sendo excluído Index.ERROR: o índice encontrou um erro no estado BUILDING

google.appengine.ext.db.get_indexes_async(**kwargs)source

Recupera de maneira assíncrona os índices de aplicativo e os estados deles.

Idêntico a get_indexes(), exceto por retornar um objeto assíncrono. Chame get_result() no valor de retorno a ser bloqueado na chamada e receba os resultados.

google.appengine.ext.db.model_from_protobuf(pb, _entity_class=google.appengine.api.datastore.Entity)source

Decodifica uma instância de modelo com base em um buffer de protocolo.

Parâmetros

pb: a representação do buffer de protocolo da instância do modelo. Pode ser uma entity_pb.EntityProto ou codificação str de uma entity_bp.EntityProto

Retorna

Instância de modelo resultante da decodificação do buffer de protocolo

google.appengine.ext.db.model_is_projection(model_instance)source

Retorna verdadeiro se a instância db.Model fornecida contém apenas uma projeção da entidade completa.

google.appengine.ext.db.model_to_protobuf(model_instance, _entity_class=google.appengine.api.datastore.Entity)source

Codifica uma instância de modelo como um buffer de protocolo.

Parâmetros

model_instance: instância de modelo a ser codificada.

Retorna

Representação entity_pb.EntityProto da instância de modelo.

google.appengine.ext.db.put(models, **kwargs)source

Armazene uma ou mais instâncias de Model.

Parâmetros
  • models: instância do modelo ou lista de instâncias do modelo.

  • config: datastore_rpc.Configuration a ser usado para essa solicitação. Precisa ser especificado como um argumento de palavra-chave.

Retorna

Uma Key caso o modelo seja uma instância, uma lista de Keys na mesma ordem de modelos caso estes sejam uma lista.

Gera

TransactionFailedError caso os dados não possam ser confirmados.

google.appengine.ext.db.put_async(models, **kwargs)source

Armazene de maneira assíncrona uma ou mais instâncias de Model.

Idêntico a db.put(), exceto por retornar um objeto assíncrono. Chame get_result() no valor de retorno a ser bloqueado na chamada e receba os resultados.

google.appengine.ext.db.query_descendants(model_instance)source

Retorna uma consulta para todos os descendentes de uma instância de modelo.

Parâmetros

model_instance: instância de modelo para encontrar os descendentes.

Retorna

Consulta que recuperará todas as entidades que tenham a instância do modelo fornecida

como um ancestral. Diferentemente de consultas ancestrais normais, isso não inclui o ancestral propriamente dito.

google.appengine.ext.db.save(models, **kwargs)source

Armazene uma ou mais instâncias de Model.

Parâmetros
  • models: instância do modelo ou lista de instâncias do modelo.

  • config: datastore_rpc.Configuration a ser usado para essa solicitação. Precisa ser especificado como um argumento de palavra-chave.

Retorna

Uma Key caso o modelo seja uma instância, uma lista de Keys na mesma ordem de modelos caso estes sejam uma lista.

Gera

TransactionFailedError caso os dados não possam ser confirmados.

google.appengine.ext.db.to_dict(model_instance, dictionary=None)source

Converta o modelo em dicionário.

Parâmetros
  • model_instance: instância do modelo para criar o dicionário.

  • dictionary: instância do dicionário ou compatível para receber valores de modelo. O dicionário não está sem valores originais. Semelhante ao uso de dictionary.update. Caso o dicionário seja None, uma nova instância do dicionário é criada e retornada.

Retorna

Novo dicionário apropriado preenchido com valores de instâncias de modelo caso a entidade seja None, ou entidade.