我正在尝试使用google cloud datastore
种类查询来获取Kind queries中演示的种类名称列表,
query = client.query(kind='__kind__')
query.keys_only()
kinds = [entity.key.id_or_name for entity in query.fetch()]
但代码会生成一些内置的类名,例如
['_AE_DatastoreAdmin_Operation', '_GAE_MR_TaskPayload',
'__Stat_Kind_IsRootEntity__', '__Stat_Kind_NotRootEntity__',
'__Stat_Kind__', '__Stat_PropertyName_Kind__',
'__Stat_PropertyType_Kind__', '__Stat_PropertyType_PropertyName_Kind__',
'__Stat_PropertyType__', '__Stat_Total__']
我想知道如何删除这些内置类名称并仅保留用户创建的类名称。
答案 0 :(得分:2)
这些似乎是在本地开发服务器/模拟器上创建的真实实体 - 实际上可以在数据存储查看器中看到它们。例如,在本地开发服务器上执行数据存储__Stat_*
操作时,会创建Generate Stats
个。
项目的实时云数据存储中不存在这些实体(或者它们存储在其他地方)。
使用应用程序实体种类的简单命名规则 - 不以_
字符开头 - 您可以获得kinds
列表,如下所示:
kinds = [entity.key.id_or_name for entity in query.fetch()
if not entity.key.id_or_name.startswith('_')]
取决于kinds
使用,另一个选项 - 从编码角度来看更安全的恕我直言 - 可能总是根据明确的预期列表检查类型名称(例如,擦除所有{ {1}}实体):
kinds