La clase Key

Nota: Se recomienda encarecidamente a los desarrolladores que creen aplicaciones nuevas que usen la biblioteca de cliente de NDB, que ofrece varias ventajas en comparación con esta biblioteca de cliente, como el almacenamiento automático en caché de entidades mediante la API Memcache. Si actualmente usas la biblioteca de cliente de DB anterior, consulta la guía de migración de DB a NDB.

Una instancia de la clase Key representa una clave única de una entidad de Datastore.

Key lo proporciona el módulo google.appengine.ext.db.

Introducción

Cada instancia de modelo tiene una clave identificadora,que incluye el tipo de entidad de la instancia junto con un identificador único. El identificador puede ser una cadena de nombre de clave, asignada explícitamente por la aplicación cuando se crea la instancia, o un ID numérico entero,asignado automáticamente por App Engine cuando se escribe la instancia (put) en Datastore. El método key() de la instancia del modelo devuelve el objeto Key de la instancia. Si aún no se ha asignado una clave a la instancia, key() genera un error NotSavedError.

Una aplicación puede obtener una instancia de modelo para una clave determinada mediante la función get().

Las instancias de clave pueden ser valores de propiedades de entidades de Datastore, incluidas las propiedades dinámicas Expando y los miembros de ListProperty. El modelo ReferenceProperty proporciona funciones para los valores de la propiedad Key, como la desreferenciación automática.

Constructor

clase Key(encoded=None)

Clave única de un objeto de Datastore.

Para convertir una clave en una cadena, pasa el objeto Key a str(). La cadena es "urlsafe", es decir, solo usa caracteres válidos para URLs. La representación de cadena de la clave se puede volver a convertir en un objeto Key pasándola al constructor Key (el argumento encoded).

Nota: La representación de cadena de una clave parece críptica, pero no está cifrada. Se puede volver a convertir en los datos de clave sin procesar, tanto del tipo como del identificador. Si no quieres exponer estos datos a tus usuarios (y permitirles que adivinen fácilmente las claves de otras entidades), cifra estas cadenas o usa otra cosa.

codificado
La forma str de una instancia de Key que se va a convertir de nuevo en una Key.

Métodos de clase

La clase Key proporciona el siguiente método de clase:

Key.from_path(*ruta, parent=None, namespace=None)

Crea un objeto Key a partir de una ruta de ancestro (opcional) en un objeto Key y uno o varios componentes de ruta nuevos. Cada componente de la ruta se compone de un nombre de tipo (kind) y un identificador (id_or_name), que puede ser un número o una cadena de caracteres.

Una ruta representa la jerarquía de las relaciones principal-secundario de una entidad. Cada entidad de la ruta se representa mediante el tipo de entidad y su ID numérico o su nombre de clave. La ruta completa representa la entidad que aparece en última posición en la ruta, con sus ancestros (elementos principales) como entidades precedentes.

Por ejemplo, la siguiente llamada crea una clave para una entidad de tipo Address con el ID numérico 9876, en la clave principal User/Boris:

k = Key.from_path('User', 'Boris', 'Address', 9876)

Otra forma de crear la misma clave es la siguiente:

p1 = Key.from_path('User', 'Boris')
k = Key.from_path('Address', 9876, parent=p1)

Para obtener más información sobre las rutas, consulta la página Entidades, propiedades y claves.

Argumentos

ruta
Lista de uno o varios componentes de ruta de ancestro, donde cada componente consta de un tipo y un identificador:
  • kind: el tipo de entidad, representado como una cadena o una cadena Unicode.
  • identifier: El id, especificado como una cadena o un valor largo. No puede ser el número 0.
namespace=None
El espacio de nombres que se va a definir solo para esta clave. Si proporcionas un espacio de nombres aquí, se anulará el espacio de nombres actual definido en namespace_manager. Si None, la API usa el espacio de nombres actual de namespace_manager.get_namespace.
parent=None
Clave principal opcional. Si no se proporciona, se utiliza None de forma predeterminada.

Métodos de instancia

Las instancias de Key incluyen los siguientes métodos:

app()

Devuelve el nombre de la aplicación que almacenó la entidad de datos.

has_id_or_name()

Devuelve True si la entidad tiene un nombre o un ID numérico.

id()

Devuelve el ID numérico de la entidad de datos como un número entero o None si la entidad no tiene un ID numérico.

id_or_name()

Devuelve el nombre o el ID numérico de la entidad de datos, lo que tenga, o None si la entidad no tiene ni nombre ni ID numérico.

kind()

Devuelve el tipo de entidad de datos en forma de cadena.

name()

Devuelve el nombre de la entidad de datos o None si la entidad no tiene nombre.

namespace()

Devuelve el espacio de nombre de la entidad de datos. Si la entidad no tiene un espacio de nombres actual, este método devuelve el espacio de nombres actual definido en namespace_manager.

parent()

Devuelve la clave de la entidad principal de la entidad de datos o None si la entidad no tiene ninguna entidad principal.