La clase Key

Nota: Se recomienda enfáticamente a los desarrolladores que compilan aplicaciones nuevas que usen la biblioteca cliente de NDB, ya que tiene muchas ventajas en comparación con esta biblioteca cliente, como el almacenamiento en caché automático de entidades mediante la API de Memcache. Si por el momento usas la biblioteca cliente de DB anterior, lee la Guía de migración de DB a NDB.

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

El módulo google.appengine.ext.db proporciona Key.

Introducción

Cada instancia del modelo tiene una clave de identificación, que incluye el tipo de entidad de la instancia junto con un identificador único. El identificador puede ser una string de nombre de clave que la aplicación asigna de forma explícita cuando se crea la instancia, o un ID numérico de número entero que App Engine asigna de forma automática cuando se escribe (put) la instancia en Datastore. El método key() de la instancia del modelo muestra el objeto Key de la instancia. key() genera un NotSavedError, si aún no se asignó una clave a la instancia.

Una aplicación puede recuperar una instancia modelo para una cierta clave con la función get().

Las instancias de clave pueden ser valores para las propiedades de entidades de Datastore, incluidas las propiedades dinámicas Expando y los miembros de ListProperty. El modelo ReferenceProperty proporciona características para los valores de las propiedades clave, como la desreferencia automática.

Constructor

class Key(encoded=None)

Una clave única para un objeto de Datastore.

Se puede convertir una clave en una string si pasas el objeto Key a str(). La string es "urlsafe" y solo usa caracteres válidos para el uso en las URL. La representación de la string de la clave se puede volver a convertir en un objeto clave si se pasa a la clave del constructor (el argumento codificado).

Nota: La representación de la string de una clave parece encriptada, pero no lo está. Se puede volver a convertir en los datos clave sin procesar, tanto del tipo como del identificador. Si deseas no exponer estos datos a tus usuarios (y permitirles que adivinen con facilidad otras claves de entidades), entonces, encripta estas strings o usa algo más.

encoded
El formato str de una instancia clave para volver a convertirse en una clave.

Métodos de clase

La clase de clave proporciona estos métodos de clase:

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

Compila un objeto Key nuevo desde una ruta de acceso principal (opcional) (en un objeto Key existente) y uno o más componentes nuevos de rutas de acceso. Cada componente de ruta consta de un nombre de categoría (kind) y un identificador (id_or_name), que puede ser una string de números o de caracteres.

Una ruta de acceso representa la jerarquía de las relaciones entre superiores y secundarios de una entidad. Cada entidad en la ruta de acceso está representada por el tipo de la entidad y su número de ID o su nombre de clave. La ruta de acceso completa representa a la entidad que aparece última en la ruta con sus principales (superiores) como entidades precedentes.

Por ejemplo, en la siguiente llamada, se crea una clave para una entidad de categoría Address con ID numérico 9876, en la clave superior User/Boris:

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

Esta es otra forma de crear la misma clave:

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

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

Argumentos

path
Una lista de uno o más componentes de la ruta de acceso principal, en la cual cada componente consta de una categoría y un identificador:
  • Tipo: Es el tipo de entidad, representada como una string o una string de Unicode.
  • Identificador: Es el id, especificado como una string o long. No puede ser el número 0.
namespace=None
Es el espacio de nombres que se debe establecer solo para esta clave. Si suministras un espacio de nombres aquí, este anula el espacio de nombres actual que se estableció en namespace_manager. Si es None, la API usa el espacio de nombres actual de namespace_manager.get_namespace.
parent=None
Clave superior opcional. Si no se proporciona, el valor predeterminado es None.

Métodos de instancia

Las instancias de clave tienen los métodos siguientes:

app()

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

has_id_or_name()

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

id()

Muestra 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()

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

kind()

Muestra el tipo de la entidad de datos, como una string.

name()

Muestra el nombre de la entidad de datos, o None si la entidad no tiene un nombre.

namespace()

Muestra el espacio de nombres de la entidad de datos. Si la entidad no tiene un espacio de nombres actual, este método muestra el espacio de nombres actual establecido en el administrador de espacio de nombres.

parent()

Muestra la clave de la entidad principal de la entidad de datos, o None si la entidad no tiene superior.