2017-07-06 3 views
0

Also versuche ich smart_query in web2py zu verwenden, um bestimmte Werte in einer db zu finden, aber die einzige Erklärung, die ich finden kann, ist im web2py Buch und es ist nicht sehr klar. Das Beispiel GET-Anfrage aus dem Buch ist wie folgt formatiert:Wie verwende ich web2py smart_query für eine GET-Anfrage?

def GET(search): 
    try: 
     rows = db.smart_query([db.person, db.pet], search).select() 
     return dict(result=rows) 
    except: 
     ... 

Ich bin verwirrt, was ich Werte anstelle von db.person und db.pet setzen würde. Hier ist, was das Buch sagt darauf:

The method db.smart_query takes two arguments: 
    a list of field or table that should be allowed in the query 
    a string containing the query expressed in natural language 

ich den ersten Wert zu denken wäre die Datenbank Ich suche, aber dann weiß ich nicht, was der zweite Wert wäre. Das Buch klingt so, als sollte es die Zeichenfolge sein, nach der ich suche, aber ich denke, dafür ist die variable Suche gedacht.

Könnte jemand bitte mir helfen zu verstehen, was genau jedes Argument tun soll?

Antwort

0

Das erste Argument für smart_query ist eine Liste von DAL Table und/oder Field Objekte (ein Table Objekt in der Liste wird einfach erweitert werden, um alle die Tabellenfelder enthalten). Diese Liste bestimmt, welche Felder in die Abfrage aufgenommen werden können.

Das zweite Argument ist die Abfrage selbst, die Feldnamen und Vergleichsoperatoren (und deren Gegenstücke in der natürlichen Sprache) sowie "und" und "oder" zu Ausdruckskonjunktionen und Disjunktionen enthalten kann. Für eine Vorstellung davon, was erlaubt ist, können Sie den entsprechenden Code here untersuchen.

Die SQLFORM.grid erweiterte Such-Widget erzeugt Abfragen, die von smart_query schließlich analysiert werden, so eine bessere Vorstellung davon zu bekommen, wie solche Abfragen zu erstellen, nehmen Sie einen Test SQLFORM.grid und spielen mit dem Such-Widget in der Benutzeroberfläche die Erstellung der Abfragen um zu sehen, es erzeugt.

Verwandte Themen