I agree, I've run into this before.  This can be really helpful with
timestamps in your schema. For instance "completed_on" can be used to
show status and a timestamp.

Only critique is that this doesn't support "foo IS NOT NULL" syntax.
Maybe we should define a NotNull SQLLiteral db.py for that?

On Mar 16, 11:40 am, Ben Hoyt <[email protected]> wrote:
> Hi folks,
>
> We've added a tweak/fix to db.where() to allow where(table_name,
> column=None) to do the "right thing". At present if you do that web.py will
> output "SELECT * FROM table_name WHERE column = NULL" which doesn't mean
> much (in SQL, NULL is not equal to anything, including other NULLs). What
> you meant was "WHERE column IS NULL".
>
> So I've added a fix and doctest to where() as follows:
>
>     def where(self, table, what='*', order=None, group=None, limit=None,
>               offset=None, _test=False, **kwargs):
>         """
>         Selects from `table` where keys are equal to values in `kwargs`.
>
>             >>> db = DB(None, {})
>             >>> db.where('foo', bar_id=3, _test=True)
>             <sql: 'SELECT * FROM foo WHERE bar_id = 3'>
>             >>> db.where('foo', source=2, crust='dewey', _test=True)
>             <sql: "SELECT * FROM foo WHERE source = 2 AND crust = 'dewey'">
>             >>> db.where('foo', source=None, _test=True)
>             <sql: 'SELECT * FROM foo WHERE source IS NULL'>
>         """
>         where = []
>         for k, v in kwargs.iteritems():
>             if v is None:
>                 where.append(k + ' IS NULL')
>             else:
>                 where.append(k + ' = ' + sqlquote(v))
>         return self.select(table, what=what, order=order,
>                group=group, limit=limit, offset=offset, _test=_test,
>                where=SQLQuery.join(where, ' AND '))
>
> -Ben

-- 
You received this message because you are subscribed to the Google Groups 
"web.py" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/webpy?hl=en.

Reply via email to