NDB Key 类

Key 类的实例代表不可变的 Datastore 键。

此页面包含 API 参考文档。如需查看概览,请参阅 NDB 实体和键

简介

键是指不可变的 Datastore 键。应用通常使用它们来引用实体。已存储的任何实体都有一个键。如需获取实体的键,请使用模型的 key 属性。 如需通过实体键检索实体,请调用 Key 对象的 get() 方法。

键支持比较,例如 key1 == key2key1 < key2。 这些运算符比较应用 ID、命名空间和完整的“祖先实体路径”。 当按键属性或键进行排序时,它们使用与 Datastore 用于查询相同的排序。

repr(key)str(key) 会返回类似于最短构造函数形式的字符串表示形式,并省略 app 和 namespace 参数(除非它们与默认值不同)。

hash(key) 作品。因此,您可以将键存储在哈希表中。

构造函数

为了实现灵活性和便利性,支持使用多个构造函数签名。

class Key(kind1, id1, kind2, id2, ...)
class Key(pairs=[(kind1, id1), (kind2, id2), ...])
class Key(flat=[kind1, id1, kind2, id2, ...])
class Key(urlsafe=string)

位置参数 kind1id1kind2id2 等按“祖先实体”排序。(这是 flat=[kind1, id1, kind2, id2] 的快捷方式)父级排在子级之前。

位置参数 pairsflat 构造函数形式还可以使用 parent=key 传入另一个键。父键的 (kind, id) 对插入在显式传入的 (kind, id) 对之前。

urlsafe 关键字参数使用网络安全 base64 编码的序列化引用,但最好将其视为不透明的唯一字符串。

其他构造函数关键字参数如下:

应用
指定应用 ID(字符串)
namespace
指定命名空间(字符串)

不影响 Datastore 的实例方法

以下方法访问键的内容。它们不参与任何 Datastore I/O 活动。

pairs()

返回 (kind, id) 对的元组。

flat()

返回拼合的 (kind1, id1, kind2, id2, ...) 的种类和 ID 值的元组。

app()

返回应用 ID。

id()

返回最后一个 (kind, id) 对中的字符串或整数 ID,如果键不完整,则返回 None

string_id()

返回最后一个 (kind, id) 对中的字符串 ID,如果该键具有整数 ID 或键不完整,则返回 None

integer_id()

返回最后一个 (kind, id) 对中的整数 ID,如果该键具有字符串 ID 或键不完整,则返回 None

namespace()

返回命名空间。

kind()

返回最后一个 (kind, id) 对中的种类。

parent()

返回由除最后一个 (kind, id) 对之外的所有对构造的键(如果该键只有一个 (kind, id) 对,则返回 None)。

urlsafe()

返回键的网络安全 base64 编码序列化版本。

注意: 网址安全字符串看起来已加密,但实际上并未加密! 它可以被轻易解码以恢复原始实体的种类和标识符。

to_old_key()

返回“旧”Datastore API (db) 的 Key

影响 Datastore 的实例方法

以下方法与 Datastore 互动。

get(**ctx_options)

返回键的实体。

参数

**ctx_options
上下文选项
get_async(**ctx_options)

返回一个最终结果为键的实体的 Future

参数

**ctx_options
上下文选项
delete(**ctx_options)

删除键的实体。

参数

**ctx_options
上下文选项
delete_async(**ctx_options)

异步删除键的实体。

参数

**ctx_options
上下文选项

类方法

from_old_key(k)

从传入的“旧”Datastore API (db) Key 返回 NDB 键。

参数

**ctx_options
上下文选项