GAE с помощью GQL, как использовать SQL-подобный запрос?

деф пост(я):

    selector = self.request.get('search')
    search = db.GqlQuery("SELECT * FROM Product WHERE productName = :selector", selector=selector)
    products = search.fetch(10)
    values = {
        'products' : products
        }
    doRender(self, 'search.html', values)

приведенный выше код предназначен для функции поиска из моей категории продуктов... На самом деле я пытался использовать код "Выбрать * из продукта, где имя продукта, например%: selector%" для моей функции поиска, но я не мог использовать этот код.... Есть ли какой-либо другой код GQL, который заменяет «запрос SQL-LIKE»??


person user520987    schedule 29.11.2010    source источник


Ответы (1)


В App Engine нет эквивалента оператора SQL LIKE. Однако вы можете сделать что-то вроде

blurred_product_name = selector[:-2]
search = db.GqlQuery('SELECT * FROM Product where productName > ',
                                          blurred_product_name)

Таким образом, если у вас есть продукты с названиями Product-1, Product-2, Product-3 и условием поиска является «Product», ваше blirred_product_name будет «Produc», что в этом случае вернет все три возможности. Однако будьте осторожны с индексами.

В качестве альтернативы вы можете очень хорошо использовать SearchableModel http://www.billkatz.com/2008/8/A-SearchableModel-for-App-Engine и сделать это легко.

person pr4n    schedule 15.12.2010