2

我有一个要批量获取的键名列表(键名存储在附加到实体的 StringListProperty 中)。我的总体计划是:

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 对象存储在列表属性中,因为我还提供跨 StringListPropererties 的用户友好查询。

4

2 回答 2

3

在对另一组进行挖掘和提问后,事实证明:

密钥完全由应用 ID 和路径决定,因此无需为此访问数据存储。——尼克·约翰逊

或者您也可以使用 db.Key 列表

于 2009-06-25T09:10:27.203 回答
0

您传递的参数Key.from_path()包含构建唯一键所需的所有信息,因此无需访问数据存储区。

数据存储区中的每个实体都有一个唯一标识它的键。密钥由以下组件组成:

  1. 实体的种类,用于对数据存储区查询进行分类
  2. 单个实体的标识符,可以是
    • 键名字符串
    • 一个整数数字 ID
  3. 在数据存储层次结构中定位实体的可选祖先路径

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

于 2012-08-09T04:46:37.837 回答