Как выполнить этот запрос в GQL [движке приложений Google]?

У меня есть таблица проектов с двумя столбцами: «язык» и «тег».

После того, как пользователь выдаст input, я хочу вывести все проекты, у которых language равно input или tag равно input.

Sql-запрос для приведенного выше будет следующим:

Sql-запрос: Select * from TableName where language='input' OR tag='input'

Я пытался сделать то же самое в Gql, но безуспешно. Каким должен быть запрос в Gql для вывода данных указанным выше способом.


person Wasim Thabraze    schedule 10.11.2015    source источник


Ответы (2)


В GQL нет OR, поэтому в основном вам нужно сделать два отдельных запроса и объединить результаты:

Select * from TableName where language='input'
Select * from TableName where tag='input'

Вы должны присоединиться к результатам на стороне вашего приложения, Cloud Console тоже не поддерживает такие вещи.

См. Справку GQL: https://cloud.google.com/datastore/docs/apis/gql/gql_reference

person Igor Artamonov    schedule 10.11.2015

Я не знаю, обязательно ли вам использовать GQL, но если вы можете этого избежать, вы можете вместо этого использовать фильтр ndb.

results = TableName.query(ndb.OR(TableName.language == 'input',
                       TableName.tag == 'input'))
for result in results: 
    ....your code here...

Дополнительная информация: https://cloud.google.com/appengine/docs/python/ndb/queries

person Pere Martra    schedule 10.11.2015