Как работают выражения запросов web2py?

Недавно у меня была возможность взглянуть на фреймворк web2py, и хотя у меня есть некоторый предыдущий опыт работы с Django и, в большей степени, с простым Python, я не мог разобраться в системе запросов который использует web2py.

Возьмем этот пример из книги web2py

db = DAL('sqlite://storage.db')
myquery = (db.mytable.myfield > 'A')
myset = db(myquery)
rows = myset.select()
for row in rows:
    print row.myfield

В комментарии SO автор web2py говорит, что (db.mytable.myfield> 'A') не оценивается как True / Непосредственно False, и он фактически оценивается для каждой строки во время выбора. Я понимаю, что именно это позволяет использовать эти выражения в качестве объектов запроса и даже комбинировать их.

Я пытался найти ответ на этот вопрос в Интернете, но не смог, поэтому вот мой вопрос: как эти выражения запроса не оцениваются сразу как True / False? Почему значение myquery, скажем, не истинно? Какая функция Python, которой мне, вероятно, не хватает, позволяет этому работать?

5
задан Community 23 May 2017 в 12:34
поделиться