代码之家  ›  专栏  ›  技术社区  ›  AutomatedTester

如何在Google App Engine中获得我的一个模型的独特价值

  •  5
  • AutomatedTester  · 技术社区  · 16 年前

    area 价值观SQL等价物是 select distinct area from tutorials

    class Tutorials(db.Model):  
        path = db.StringProperty()
        area = db.StringProperty()
        sub_area = db.StringProperty()
        title = db.StringProperty()
        content = db.BlobProperty()
        rating = db.RatingProperty()
        publishedDate = db.DateTimeProperty()
        published = db.BooleanProperty()
    

    我知道用Python我可以做到

        a = ['google.com', 'livejournal.com', 'livejournal.com', 'google.com', 'stackoverflow.com']
     b = set(a)
        b
        >>> set(['livejournal.com', 'google.com', 'stackoverflow.com'])
    

    我想获取数据存储中区域的所有不同值,将其作为链接转储到屏幕上。

    3 回复  |  直到 15 年前
        1
  •  7
  •   jldupont    14 年前

    数据存储无法在单个查询中为您完成此操作。数据存储请求总是从索引返回一个连续的结果块,索引总是由给定类型的所有实体组成,并根据指定的顺序进行排序。查询无法仅因为一个字段具有重复的值而跳过项。

    另一种选择是使用排队任务或cron作业定期创建所有区域的列表,根据需要在多个请求上累积,并将结果放入数据存储或memcache中。这当然意味着区域列表有时可能会暂时过时(或者如果不断发生变化,则可能永远不会完全过时),这可能是您可以接受的,也可能是您无法接受的。

        2
  •  1
  •   Alfred Fuller    12 年前

    DISTINCT关键字已在1.7.4版中引入。