Its alive!
#batch insert
>>> db.posts.insert([dict(count=i+1) for i in range(3)])
[1, 2, 3]
#batch update (with optional transactions)
>>> def inc(r): r.count+=1
>>> def dec(r): r.count-=1
>>> db.posts.update(1,[2,3],dict(count=0),dict(count=lambda v:
>>> v+2),dec,inc,count=lambda v: v-2)
3
#batch get
>>> db.posts.select(orderby=db.posts.id)
[{'count': 0L, 'id': 1}, {'count': 0L, 'id': 2}, {'count': 0L, 'id':
3}]
#batch delete
>>> db.posts.delete([3,2],1)
3
And its fully transactional when you pass callable args, all the
drivers will get it for free because it is not done at the driver
level.
Robin
On Feb 8, 3:46 pm, Robin B <[email protected]> wrote:
> I think in SQL you can use '|' to generate each in 1 query.
>
> Robin
>
> On Feb 8, 3:44 pm, mdipierro <[email protected]> wrote:
>
> > In principle I am for all of these but I am not sure they can be
> > implemented easily in SQL without loops. Can they?
>
> > On Feb 8, 3:39 pm, Robin B <[email protected]> wrote:
>
> > > We could add select and delete to tables and limitby could have a
> > > shortcut:
>
> > > instead of:
> > > (db.posts.id>0).select(orderby=~db.posts.created_at,limitby=(0,10))
>
> > > how about:
> > > db.posts.select(orderby=~db.posts.created_at, limitby=10)
>
> > > batch get:
> > > db.posts.select([3,5,9])
>
> > > and delete could also accept kwargs:
> > > db.posts.delete(orderby=db.posts.created_at,limitby=10)
>
> > > and batch delete:
> > > db.posts.delete([3,5,9])
>
> > > Robin
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"web2py Web Framework" 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/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---