Я хотел бы получить список KINDS
из моего хранилища данных Google App Engine с помощью запросов (GQL
может быть?). Например, как просто show tables
базы данных.
Я посмотрел на похожий вопрос (Как перечислить виды в хранилище данных?), однако это не решает мою проблему, поскольку это специфично для Python.
В настоящее время я использую библиотеку GDS в PHP (https://github.com/tomwalder/php-gds), который помогает мне получать данные из GDS, если я знаю имя сущности, используя "SELECT * FROM Kind"
GQL-запрос.
В настоящее время я нахожусь в ситуации, когда я могу не знать имя Entity KIND, из которого мне нужно получить данные, отсюда необходимость получить список Entity KINDS, который я затем смогу просмотреть и подтвердить, существует ли сущность, а затем запустить мой выберите запрос.
Любые указатели будут с благодарностью.
Вы можете запросить их, используя объекты метаданных ndb.
https://cloud.google.com/appengine/docs/python/ndb/metadata#get_kinds
Вот альтернативный подход, основанный на GQL … Это возвращает список доступных видов:
SELECT * FROM __kind__
Теоретически вы можете затем получить схему для этого объекта, перечислив связанные свойства для данного вида (например, персона):
SELECT * FROM __property__
WHERE __key__ HAS ANCESTOR KEY(__kind__, 'Person')
Если вы используете библиотеку Google для выдачи этих запросов, вам придется установить AllowLiterals = true
свойство в вашем запросе, чтобы избежать получения исключения с подробным описанием ошибки Disallowed literal: KEY
,
Кроме того, так как property_representation
Значения перегружены для таких вещей, как Даты против Целых чисел, тогда вы можете использовать данные типа только в качестве предположения о базовом типе, возможно, используя соглашения. Когда вы перемещаетесь по данным, вы можете обновить информацию о типе. Любопытно, что лучшего способа нет, поскольку пользовательский интерфейс Google Datastore предоставляет информацию о типах при создании нового экземпляра сущности.