My favorites | 中文(简体) | Sign in

Key 类

Key 类的实例代表数据库实体的唯一键。

Keygoogle.appengine.ext.db 模块提供。

简介

存储在数据库中的每个 Model 实例都拥有一个代表该对象的唯一键。Model 实例的 key() 方法会返回实例的 Key 对象。如果该实例从未被 put() 到数据库中,则 key() 方法会抛出 NotSavedError 错误。

应用程序可以使用 get() 函数检索指定键的 Model 实例。

Key 实例可以是数据库实体属性的值,包括 Expando 动态属性和 ListProperty 成员。ReferenceProperty 模型可以为 Key 属性值提供自动取消引用等各项功能。

构造函数

class Key(encoded=None)

数据库对象的唯一键。

通过将 Key 对象传递到 str()(或调用对象的 __str__() 方法),可以把键编码成字符串。编码为字符串的键是一个使用能安全地加在网址中的字符的不透明值。通过将编码为字符串的键传递到 Key 构造函数(encoded 参数),可以将其转换回 Key 对象

注意:编码为字符串的键可以转换回原始键数据。这样,当知道一个键时猜测其他键会更为容易。虽然编码为字符串的键值能够安全地加到网址中,但是只有在键的可猜测度不成为问题的情况下,应用程序才能这样做。

encoded
可以转换回 Key 的 Key 实例的 str 形式。

类方法

Key 类提供以下类方法:

Key.from_path(*args, **kwds)

从一个或多个实体键的祖先路径构建新的 Key 对象。

路径代表实体的父子关系的层次结构。路径中的每个实体都由实体的类型,以及其数字 ID 或键名来代表。完整路径代表路径中最后显示的实体,其祖先(父)作为前续实体。

例如,以下调用可以为类型为 Address 的实体创建一个数字 ID 为 9876 的键,其父实体的类型为User,键名为'Boris'

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

参数:

*args
从根实体到主题的路径。路径中的每个实体都由列表中的两个元素来表示:类型名称和该类型实体的键名或 ID。
**kwds
关键字参数。该方法支持一个关键字参数 (parent),该参数可以指定添加到指定路径前面的父实体。其值是父实体的 Key。

有关路径的详细信息,请参阅键和实体组

实例方法

Key 实例有以下方法:

app()

返回存储数据实体的应用程序的名称。

kind()

以字符串形式返回数据实体的类型。

id()

以整数形式返回数据实体的数字 ID,如果实体没有数字 ID 则返回 None

name()

返回数据实体的名称,如果实体没有名称则返回 None

id_or_name()

返回数据实体的名称或数字 ID(无论有哪个),如果实体既没有名称也没有数字 ID 则返回 None

has_id_or_name()

如果实体有名称或数字 ID 则返回 True

parent()

返回数据实体的父实体的 Key,如果该实体没有父实体则返回 None