I just had to figure this out for my own application, so reposting the answer here.
It is worth noting that this answer is for the older db
api. The new ndb
api has another way to get all Kind
listed here https://cloud.google.com/appengine/docs/python/ndb/metadata#get_kinds
Time has passed since this was asked and answered. Now there's a simpler way.
See http://code.google.com/appengine/docs/python/datastore/metadataqueries.html
q = Kind.all()
for kind in q.fetch(100):
print kind.kind_name
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)
Reference: http://groups.google.com/group/google-appengine/browse_thread/thread/f2e7568040c015ff