我是网络开发和谷歌应用引擎的新手。我真的不明白ndb中key的功能是什么,我认为它就像是每行的主键?如果key的功能是识别每个实体中的任何行,我可以用它来进行查询吗?
我也不明白如何在每行中检索密钥。在文档中,我们应该使用此代码返回密钥,并存储到数据库。
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")
是否可以从该查询中获取密钥?
谢谢
答案 0 :(得分:2)
您实际上在寻找实体的ID(或标识符)。实体的密钥由标识符和种类组成。这种类型通常是模型的名称,在您的情况下是“发布”。
您可以使用.id()方法检索实体的ID。在您的示例中,您必须首先“获取”或“获取”实体。您提供了一个查询。如果您要获取与查询匹配的一个实体并找到该实体的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文档中进行了解释。