获取GAE Python中所有NDB模型名称(类名称)的列表

时间:2015-03-01 08:20:22

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

如何获取GAE Python中所有NDB模型名称的列表?

所有NDB模型都是继承自ndb.Model的Python类。我想我们可以使用这些信息来获取所有模型的名称。

class BK (ndb.Model): 
    property_1 = ..

我尝试了以下(borrowed)代码,但徒劳无功:

ATTEMPT 1

logging.info ( [ cls.__name__ for cls in globals()['ndb.Model'].__subclasses__() ] )

导致错误:

  

KeyError:' ndb.Model'

ATTEMPT 2

logging.info ( [ cls.__name__ for cls in globals()['Model'].__subclasses__() ] )

导致错误:

  

KeyError:'模型'

2 个答案:

答案 0 :(得分:5)

幸运的是,在这种情况下,它要容易得多:

from google.appengine.ext import ndb


class Test(ndb.Model):
    pass

print ndb.Model._kind_map

产生以下输出:

{'Test': Test<>}

答案 1 :(得分:3)

除了Jaime的答案之外,还有metadata API,它可以告诉您已在数据存储区中注册的实体种类。