【问题标题】:Get list of all NDB model names ( class names ) in GAE Python获取 GAE Python 中所有 NDB 模型名称(类名)的列表
【发布时间】:2015-03-01 08:20:21
【问题描述】:

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

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

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

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

尝试 1

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

导致错误:

KeyError: 'ndb.Model'

尝试 2

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

导致错误:

KeyError: '模型'

【问题讨论】:

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


    【解决方案1】:

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

    from google.appengine.ext import ndb
    
    
    class Test(ndb.Model):
        pass
    
    print ndb.Model._kind_map
    

    产生以下输出:

    {'Test': Test<>}
    

    【讨论】:

      【解决方案2】:

      除了 Jaime 的回答,还有metadata API,它可以告诉你已经在数据存储区注册的实体种类。

      【讨论】:

      • 正是我需要的。非常感谢丹尼尔。
      • 抱歉,我将 Jaime 的回答标记为已接受,因为我后来发现尚未为其创建实体的模型并未在此处列出。我忽略了registered in the datastore。我的错。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 2016-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多