Piotr Kęplicz pisze:
> Joe Riopel, środa 07 stycznia 2009 17:45:
>   
>>> Session.query(Person).filter_by(...).delete()
>>>       
>> Isn't that code still doing the select first, to get the object, and
>> then deleting it?
>>     
>
> No. It's a Query object turned into a DELETE statement, just like first(), 
> all() or one() would turn it into a SELECT statement.
>   
pylons 0.9.7, sqlalchemy 0.5
This is copy paste from console:

Pylons Interactive Shell
Python 2.5 (release25-maint, Jul 20 2008, 20:47:25)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)]

  All objects from pyupo.lib.base are available
  Additional Objects:
  mapper     -  Routes mapper object
  wsgiapp    -  This project's WSGI App instance
  app        -  paste.fixture wrapped around wsgiapp

 >>> from pyupo.model.meta import Session
 >>> from pyupo.model.emailbag import EmailBag as e
 >>> s = Session.query(e).filter(e.order_id == 1).filter(e.active == 
True).filter(e.dispatched == False)
 >>> s.delete()
07:10:35,545 INFO  [sqlalchemy.engine.base.Engine.0x...6acL] BEGIN
07:10:35,546 INFO  [sqlalchemy.engine.base.Engine.0x...6acL] SELECT em
ailbag.id AS emailbag_id
FROM emailbag
WHERE emailbag.order_id = %s AND emailbag.active = %s AND emailbag.dis
patched = %s
07:10:35,546 INFO  [sqlalchemy.engine.base.Engine.0x...6acL] [1, 1, 0]
07:10:35,547 DEBUG [sqlalchemy.engine.base.Engine.0x...6acL] Col 
('emailbag_id',)
07:10:35,547 INFO  [sqlalchemy.engine.base.Engine.0x...6acL] DELETE FROM 
emailbag WHERE emailbag.order_id = %s AND emailbag.active = %s AND 
emailbag.dispatched = %s
07:10:35,547 INFO  [sqlalchemy.engine.base.Engine.0x...6acL] [1, 1, 0]
0L
 >>> s.update({'active': False})
07:12:15,965 INFO  [sqlalchemy.engine.base.Engine.0x...6acL] SELECT 
emailbag.id AS emailbag_id FROM emailbag
WHERE emailbag.order_id = %s AND emailbag.active = %s AND 
emailbag.dispatched = %s
07:12:15,965 INFO  [sqlalchemy.engine.base.Engine.0x...6acL] [1, 1, 0]
07:12:15,965 DEBUG [sqlalchemy.engine.base.Engine.0x...6acL] Col 
('emailbag_id',)
07:12:15,966 INFO  [sqlalchemy.engine.base.Engine.0x...6acL] UPDATE 
emailbag SET active=%s, updated_at=CURRENT_DATE WHERE emailbag.order_id 
= %s AND emailbag.active = %s AND emailbag.dispatched = %s
07:12:15,966 INFO  [sqlalchemy.engine.base.Engine.0x...6acL] [0, 1, 1, 0]
0L


This examples say something else.
What is wrong with this query?

Best Regards,
Tomek


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To post to this group, send email to pylons-discuss@googlegroups.com
To unsubscribe from this group, send email to 
pylons-discuss+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/pylons-discuss?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to