This answer is correct but to clarify to Narendran.... his query was
not wrong. The problem is that the data was not inserted via web2py
and therefore web2py may not be recognizing the column. Make sure the
column is a 'char' and contains 'T' or 'F'. This was a design choice
to because not all backends support boolean and because, even if they
do, that is how they implement it internally (1 byte).

On Aug 18, 5:30 pm, Russell <[email protected]> wrote:
> Use 'T' or 'F' rather than 'True' of 'False'.  Web2py saves boolean
> data as 'char' with length 1.
>
> On Aug 19, 1:49 am, Narendran <[email protected]> wrote:
>
> > Hi,
> > I added a new boolean field to a table. And I manually updated the
> > value of the field outside web2py. Now, I get zero rows for any
> > condition I put on that field. Please see the following shell output
> > for an idea:
>
> > In [7]:  offers = db(db.OFFER.IS_PRICE_COMPARED == False).select()
> >    ...:
>
> > In [8]: len(offers)
> > Out[8]: 0   #####<-- This is not expected. It should return all the
> > rows
>
> > In [9]:  offers = db(db.OFFER.IS_PRICE_COMPARED == True).select()
> >    ...:
>
> > In [10]: len(offers)
> > Out[10]: 0
>
> > In [11]:  offers = db().select(db.OFFER.IS_PRICE_COMPARED)
> >    ....:
>
> > In [12]: len(offers)
> > Out[12]: 668
>
> > In [13]: offers[0]
> > Out[13]: <Row {'IS_PRICE_COMPARED': False}> ######<-- Notice the value
> > being False here
>
> > In [14]: offers[1]
> > Out[14]: <Row {'IS_PRICE_COMPARED': False}>

Reply via email to