It's because of pythons limitations in overloading operators. You can change behavior of &, |, ~ in python, but cannot change and, or, not.
On Thu, Feb 17, 2011 at 7:00 PM, Paul Gerrard <[email protected]>wrote: > On more than one occasion, I've been caught out by a slip in my select > statements. If you use 'and' rather than '&' to combine criteria for a > select you get different results. In the first case, (and) the code > returns a single record, regardless of the values of the critieria > used for the selection. In the second case (&) I get the correct > record depending on the value of termkey. > > # this doesn't work > # > glossary=db((db.glossaryterms.termkey==termkey) and > (db.glossaryterms.org_id==session.org_id)).select() > # > # this does work > glossary=db((db.glossaryterms.termkey==termkey) & > (db.glossaryterms.org_id==session.org_id)).select() > > My question is: should using 'and' work at all or is it precluded as a > keyword in queries? As it is I've lost hours trying to figure out the > problem. > > If 'and' should work - there's a bug in DAL I think. > If 'and' should not work, then it would be really helpful if the DAL > rejected with a runtime failure message so it doesn't waste a lot of > time.

