2017-02-21 5 views
0

Я пытаюсь использовать google cloud datastore рода запрос, чтобы получить список имен типа, как и предназначалась в Kind queries,Как удалить встроенные имена видов в Google хранилищу, используя тип запросов

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__'] 

Мне интересно, как удалить эти имена встроенных имен и сохранить только имена, созданные пользователем.

ответ

2

Те, кто похож на виды реальных объектов, созданных на локальном сервере/эмуляторе разработки, - их можно увидеть в средстве просмотра хранилища данных. Например, файлы __Stat_* создаются, когда действие datastore Generate Stats выполняется на локальном сервере разработки.

Эти объекты не существуют в живом облачном хранилище проекта (или они хранятся в другом месте).

С помощью простого правила именования типов сущностей приложения - не начать с _ характер - вы могли бы получить kinds список вроде этого:

kinds = [entity.key.id_or_name for entity in query.fetch() 
      if not entity.key.id_or_name.startswith('_')] 

В зависимости от kinds использования, другой вариант - безопаснее ИМХО от кодирования проспективного - может быть всегда проверять имена вида против явного ожидаемого списка (например, когда уничтожить все kinds объектов):

kinds = [entity.key.id_or_name for entity in query.fetch() 
      if entity.key.id_or_name in known_kinds_list] 
+0

Thx для решений. Для 2-го решения, вещь в моем сценарии, я хочу создать метод get_tables, который возвращает все имена пользователя, созданные пользователем. Это эквивалентно 'collection_names' для' pymongo.database.Database'. Если у меня есть 'known_kinds_list', мне, вероятно, не нужны имена всех видов. – daiyue

Смежные вопросы