GAE с помощью GQL, как использовать SQL как запрос? - PullRequest
0 голосов
/ 29 ноября 2010

def post (self):

    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)

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

1 Ответ

1 голос
/ 15 декабря 2010

В 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 и легко это сделать.

...