GAE с помощью GQL, как использовать SQL как запрос?

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 ответ

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

Другие вопросы по тегам