在谷歌应用引擎中获取名称

时间:2013-11-23 14:39:37

标签: python google-app-engine google-cloud-datastore

我没有使用get_by_id()方法获取特定条目的ID并从google数据存储区打印此条目的内容,而是尝试获取网址的名称并打印内容。例如:

<a href="http://.../name"></a> 

打印具有此特定名称的所有内容(可能包含多行具有此名称的内容)

<a href="http://.../343532432"></a>

打印特定ID的内容

我正在使用get_by_id(long(id))来获取我的示例的第二部分中的id,以及它的工作原理。我试图使用get_by_key_name(名称),但它不起作用。有什么想法吗?谢谢。

抱歉,但由于我无法发表评论,我正在编辑我的问题。基本上,从现在起我可以从我的数据存储中获取动物的所有名称,并且我使用模板文件中的html代码使它们可以点击。在数据存储区中,存在多次具有相同动物名称的条目(例如,name = duck,content = water和name = duck,content = lake)。现在,当我点击动物的每个名字时(我在我的gql查询中使用DINSTINCT打印多余的元素(例如鸭子)只有一次)。因为名字= duck有两个内容,当我点击名字时鸭子我想看到两个内容。我的问题是如果我使用get_by_id(long(id))我得到每个元素的唯一ID。但这不会打印出name = duck的两个内容,因为每个条目都有唯一的id。但我希望条目的所有内容具有相同的名称。我正在尝试以下但它不起作用。

     msg = MODEL.Animals.get_by_key_name(name)
     self.response.write("%s" % msg.content)

1 个答案:

答案 0 :(得分:0)

使用get_by_id(),只有知道此ID才能获取实体。此操作命名为&#34;小型操作&#34;在配额中,它们比数据存储读取便宜,但要获取通过索引属性过滤的实体列表 - 您应该使用过滤器。

query = MODEL.Animals.query()
query = query.filter(MODEL.Animals.name == 'duck')
ducks = query.fetch(limit=100)  # limit number of returned animals
for duck in ducks:
   self.response.write('%s - %s' % (duck.name, duck.content))

默认情况下,所有字符串属性都已编制索引,因此您可以执行此类请求。