2010-11-29 30 views
0

publier def (auto):GAE en utilisant GQL, comment utiliser SQL comme requête?

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) 

code ci-dessus est pour la fonction de recherche de ma catégorie de produit ... En fait, je l'ai essayé d'utiliser le code "Select * De produit Où productName comme%: Sélecteur%" pour ma fonction de recherche, mais je ne pouvais pas utiliser ce code .... Existe-t-il un autre code GQL qui remplace la requête SQL-LIKE?

Répondre

1

Il n'y a aucun équivalent de LIKE de SQL dans App Engine. Vous pouvez cependant faire quelque chose comme

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

Donc, si vous avez des produits avec le nom du produit-1, produit-2, produit-3 et le terme de recherche est « produit », votre blirred_product_name sera « Produc » qui retournera toutes les trois possibilités dans ce cas. Soyez prudent avec les index cependant. Alternativement, vous pouvez très bien utiliser SearchableModel http://www.billkatz.com/2008/8/A-SearchableModel-for-App-Engine et cela se fait facilement.