Classe Key

Remarque : Les développeurs qui créent des applications sont vivement encouragés à utiliser la bibliothèque cliente NDB, qui présente plusieurs avantages par rapport à cette bibliothèque cliente, tels que la mise en cache automatique des entités via l'API Memcache. Si vous utilisez actuellement l'ancienne bibliothèque cliente DB, consultez le guide de migration de la bibliothèque cliente DB vers NDB.

Une instance de la classe Key représente une clé unique correspondant à une entité Datastore.

La classe Key est fournie par le module google.appengine.ext.db.

Présentation

Chaque instance de modèle possède une clé d'identification qui inclut le genre d'entité de l'instance ainsi qu'un identifiant unique. L'identifiant peut correspondre à une chaîne de nom de clé, attribuée explicitement par l'application lors de la création de l'instance, ou à un ID numérique entier, attribué automatiquement par App Engine lorsque l'instance est écrite (à l'aide de la méthode put) dans le datastore. La méthode key() de l'instance de modèle renvoie l'objet Key de l'instance. Si aucune clé n'a été attribuée à l'instance, key() génère une erreur NotSavedError.

Une application peut récupérer une instance de modèle associée à un objet Key donné à l'aide de la fonction get().

Les instances Key peuvent être des valeurs de propriétés d'entités Datastore, y compris des propriétés dynamiques Expando et des membres ListProperty. Le modèle ReferenceProperty propose des fonctionnalités pour les valeurs de propriétés Key, telles que le déréférencement automatique.

Constructeur

class Key(encoded=None)

Clé unique d'un objet Datastore.

Il est possible de convertir une clé en chaîne en transmettant l'objet Key à str(). La chaîne est sécurisée pour les URL : elle n'utilise que des caractères valides dans les URL. Vous pouvez également reconvertir la chaîne de la clé en un objet Key en la transmettant au constructeur Key (l'argument "encoded").

Remarque : La chaîne d'une clé semble difficile à lire, mais elle n'est pas chiffrée. Elle peut être reconvertie en données de clé brutes, avec le genre et l'identifiant. Si vous ne souhaitez exposer ces données à vos utilisateurs (pour éviter qu'ils devinent facilement les clés d'autres entités), chiffrez ces chaînes ou utilisez une autre méthode.

encoded
Forme str d'une instance Key à reconvertir en clé.

Méthodes des classes

La classe Key fournit la méthode de classe suivante :

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

Crée un objet Key à partir d'un chemin d'accès ancêtre facultatif (dans un objet Key existant) et d'un ou plusieurs nouveaux composants de chemin. Chaque composant de chemin comporte un nom de genre (kind) et un identifiant (id_or_name), qui peut être un nombre ou une chaîne de caractères.

Un chemin d'accès représente la hiérarchie des relations parent-enfant d'une entité. Chaque entité du chemin d'accès est représentée par son genre, ainsi que par son ID numérique ou son nom de clé. Le chemin d'accès complet représente l'entité, qui apparaît en dernier dans le chemin d'accès, avec ses ancêtres (parents), qui correspondent aux entités précédentes.

Par exemple, l'appel suivant crée un objet Key pour une entité de genre Address avec l'ID numérique 9876, sous la clé parente User/Boris :

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

Vous pouvez également créer cet objet Key à l'aide de l'appel suivant :

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

Pour en savoir plus sur les chemins d'accès, consultez la page Entités, propriétés et clés.

Arguments

path
Liste des composants de chemin d'ancêtre, chaque composant étant constitué d'un genre et d'un identifiant :
  • Genre : genre de l'entité, représenté sous forme de chaîne ou de chaîne Unicode
  • Identifiant : id, spécifié sous forme de chaîne ou d'objet long. L'ID ne peut pas correspondre au chiffre 0.
namespace=None
Espace de noms à définir pour cet objet Key uniquement. Si vous fournissez un espace de noms ici, il remplace l'espace de noms actuel défini dans namespace_manager. Si la valeur None est spécifiée, l'API utilise l'espace de noms actuel de namespace_manager.get_namespace.
parent=None
Clé parent facultative. Si la clé n'est pas fournie, la valeur par défaut est None.

Méthodes des instances

Les méthodes des instances de la classe Key sont les suivantes :

app()

Renvoie le nom de l'application qui a stocké l'entité de données.

has_id_or_name()

Renvoie True si l'entité possède un nom ou un ID numérique.

id()

Renvoie l'ID numérique de l'entité de données sous la forme d'un entier. Renvoie None si l'entité ne possède pas d'ID numérique.

id_or_name()

Renvoie le nom ou l'ID numérique de l'entité de données. Renvoie None si l'entité ne possède pas de nom ni d'ID numérique.

kind()

Renvoie le kind de l'entité de données, sous forme de chaîne.

name()

Renvoie le nom de l'entité de données ou None si l'entité n'a pas de nom.

namespace()

Renvoie l'espace de noms de l'entité de données. Si l'entité ne dispose d'aucun espace de noms, cette méthode renvoie l'espace de noms actuel défini dans namespace_manager.

parent()

Renvoie la clé du parent de l'entité de données ou None si l'entité n'a aucun parent.

Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement standard App Engine pour Python