2010-11-29 6 views
0

def Post (self):GAE mit GQL, wie SQL wie Abfrage verwenden?

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) 

oben Code für Suchfunktion von meiner Produktkategorie ist ... Eigentlich habe ich versucht, den Code zu verwenden "Select * From Produkt Wo product wie%: Selektor%" für meine Suchfunktion, aber ich konnte diesen Code nicht benutzen .... Gibt es irgendeinen anderen GQL-Code, der die 'SQL-LIKE-Abfrage' ersetzt?

Antwort

1

Es gibt keine Entsprechung von SQL LIKE in App Engine. Sie können also so etwas wie

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

aber tun, wenn Sie Produkte mit dem Namen Produkt-1, Produkt-2, Produkt-3 und dem Suchbegriff ist „Produkt“ haben, Ihr blirred_product_name wird „Produk“, die gibt in diesem Fall alle drei Möglichkeiten zurück. Seien Sie jedoch vorsichtig mit Indizes.

Alternativ können Sie auch SearchableModel http://www.billkatz.com/2008/8/A-SearchableModel-for-App-Engine sehr gut verwenden und dies leicht erledigen.