如何列出数据存储区中的种类?

时间:2010-03-29 23:33:39

标签: google-app-engine

我只需要为我自己的应用程序解决这个问题,所以在这里重新发布答案。

3 个答案:

答案 0 :(得分:5)

自从被问及回答以来,时间已经过去了。现在有一种更简单的方法。

请参阅http://code.google.com/appengine/docs/python/datastore/metadataqueries.html

q = Kind.all()
for kind in q.fetch(100):
  print kind.kind_name

答案 1 :(得分:4)

def GetSchemaKinds():
    """Returns the list of kinds for this app."""

    class KindStatError(Exception):
      """Unable to find kind stats."""

    from google.appengine.ext.db import stats
    global_stat = stats.GlobalStat.all().get()
    if not global_stat:
      raise KindStatError()
    timestamp = global_stat.timestamp
    kind_stat = stats.KindStat.all().filter(
        "timestamp =", timestamp).fetch(1000)
    kind_list = [stat.kind_name for stat in kind_stat
                 if stat.kind_name and not stat.kind_name.startswith('__')]
    kind_set = set(kind_list)
    return list(kind_set) 

参考:http://groups.google.com/group/google-appengine/browse_thread/thread/f2e7568040c015ff

答案 2 :(得分:1)

值得注意的是,这个答案适用于较早的db api。新的ndb api还有另一种方法可以让https://cloud.google.com/appengine/docs/python/ndb/metadata#get_kinds列出Kind