Google App Engine 关于 ndb 中的键

Google App Engine about key in ndb

我是网络开发方面的新手,也是 google 应用引擎方面的新手。我不太明白ndb中key的作用是什么,我觉得它就像是每一行的主键?如果key的作用是识别每个实体中的任意行,我可以用它来查询吗?

我也不明白如何检索每一行中的键。在文档中,我们应该将此代码用于 return 键,并存储到数据库。

sandy_key = sandy.put()

如果我不想存储任何东西而只想检索密钥怎么办?例如:

class Post(ndb.Model):
    title = ndb.StringProperty()
    content = ndb.TextProperty()
    created = ndb.DateTimeProperty(auto_now=True) 

然后我做一个查询。

q = Post.query(Post.title == "test")

是否可以从该查询中获取密钥?

谢谢

您实际上是在寻找实体的 ID(或标识符)。实体的 key 由标识符和种类组成。种类通常是模型的名称,在您的例子中是 "Post".

您可以使用 .id() 方法检索实体的 ID。在您的示例中,您必须首先 "fetch" 或 "get" 一个实体。您提供了一个查询。如果您要获取一个与您的查询匹配的实体并找到该实体的 ID,您的代码将如下所示:

q = Post.query(Post.title == "test")
my_entity = q.fetch(1, keys_only=True)
my_key = my_entity.id()

fetch 中的 "keys_only" 参数不是必需的,但它确实节省了资源,因为它告诉 fetch 只检索密钥。

此信息在 NDB Entity Keys 文档中有解释。