Key.from_path会访问数据存储吗?

2 投票
2 回答
693 浏览
提问于 2025-04-15 12:29

我有一份关键名称的列表,想要批量获取这些名称(这些关键名称存储在一个和实体关联的字符串列表属性中)。我的大致计划是这样做:

usernames = userrefInstance.users # A collection of strings on another 
model. 
keys = [Key.from_path('User', key_name) for username in usernames] 
users = db.get(keys)

我想问一下,Key.from_path 这个方法会访问数据存储吗?我希望尽可能快地完成这个操作,如果 Key.from_path 会访问数据存储,那我就需要想其他办法来存储一组关键字。我不太想把 Key 对象存储在列表属性中,因为我还需要提供用户友好的查询功能来处理这些字符串列表属性。

2 个回答

0

你传给 Key.from_path() 的参数包含了构建唯一键所需的所有信息,所以不需要去访问数据存储。

数据存储中的每个实体都有一个唯一的键来标识它。这个键由以下几个部分组成:

  1. 实体的类型,这个是为了在数据存储查询时对实体进行分类。
  2. 每个实体的标识符,可以是:
    • 一个键名字符串
    • 一个整数ID
  3. 一个可选的祖先路径,用来在数据存储的层级结构中定位这个实体。

来源: https://developers.google.com/appengine/docs/python/datastore/entities

3

经过一些深入的探讨和在另一个小组的提问,结果发现:

键(keys)完全是由应用程序的 ID 和路径决定的,所以不需要去访问数据存储。 - Nick Johnson

或者你也可以使用一个 db.Key 的列表。

撰写回答