Niedawno miałem okazję przyjrzeć się strukturze web2py i chociaż mam pewne wcześniejsze doświadczenia z Django, a bardziej z prostym językiem Pythona, nie mogłem zrozumieć systemu kwerend, który wykorzystuje web2py.Jak działają wyrażenia zapytań web2py?
Weźmy ten przykład z web2py book
db = DAL('sqlite://storage.db')
myquery = (db.mytable.myfield > 'A')
myset = db(myquery)
rows = myset.select()
for row in rows:
print row.myfield
In a SO comment Web2py autor mówi, że (db.mytable.myfield > 'A')
nie ocenia się Prawda/Fałsz bezpośrednio i to faktycznie obliczane dla każdego wiersza w momencie wyboru. Rozumiem, że dzięki temu wyrażenia mogą być używane jako obiekty zapytania, a nawet łączone.
Próbowałem znaleźć odpowiedź na to online, ale nie mogłem, więc oto moje pytanie: W jaki sposób te wyrażenia zapytań nie są od razu oceniane jako prawda/fałsz? Dlaczego wartość myquery nie jest, powiedzmy, prawda? Którą z funkcji Pythona, której prawdopodobnie brakuje, pozwala to działać?