that's how i do it now... just thought I could save that trip in case update ids were known :) thanks for responding Niphlod.
On Tuesday, October 23, 2012 4:25:38 AM UTC-4, Niphlod wrote: > > that would require another query (no thanks!). No database on an update > gives you back the ids of the records you updated, just the number of rows. > > Suppose you did db.update_or_insert(condition, values) > > If you are in the need just db(condition).select(table.id) after that. > > On Tuesday, October 23, 2012 3:15:44 AM UTC+2, Adi wrote: >> >> Stumbled upon the same thing. >> >> Understood that possibly results could have more ids when key is >> different from primary key, e.g (name=='john'), but would it be possible to >> return an additional parameter with update id(s), if they are known? >> >> return newid, updateids >> >> >> On Friday, December 30, 2011 12:31:37 PM UTC-5, olivier wrote: >>> >>> The "insert" method returns the id of the inserted row. >>> The "update_or_insert" method returns the id of the inserted row, but >>> returns None in case of an update... >>> >>> Why is it so? >>> >>> I have a case in which I want to update_or_insert and then further >>> update the corresponding row (to track the status of a long running >>> process). >>> I would rather have the method to always output the id of the updated/ >>> inserted row... >>> Or is there any use-case you would like to discriminate between the >>> fact you inserted or update a row? >>> >>> What do you think? >>> >>> -Olivier >>> >>> >>> From dal.py (I added the proposed modification) >>> =========== >>> >>> def update_or_insert(self, key=DEFAULT, **values): >>> if key==DEFAULT: >>> record = self(**values) >>> else: >>> record = self(key) >>> if record: >>> record.update_record(**values) >>> newid = None #------> why not record['id'] ???? >>> else: >>> newid = self.insert(**values) >>> return newid >> >> --

