Recientemente tuve la oportunidad de echar un vistazo al framework web2py y aunque tengo alguna experiencia previa con Django y más con Python sin formato, no pude entender el sistema Query que usa web2py.¿Cómo funcionan las expresiones de consulta web2py?
Tomemos este ejemplo de 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 autor web2py dice que (db.mytable.myfield > 'A')
no se evalúa como verdadero/falso directamente y de hecho es evaluada para cada fila en el momento de la selección. Entiendo que esto es lo que permite que estas expresiones se utilicen como objetos de consulta e incluso se combinen.
He tratado de encontrar una respuesta a esto en línea pero no pude, así que aquí está mi pregunta: ¿Cómo es que esas expresiones de consulta no están evaluando a True/False de inmediato? ¿Por qué el valor de myquery no es, por ejemplo, True? ¿Qué función de Python que probablemente estoy perdiendo permite que esto funcione?