On Jan 20, 2007, at 2:59 AM, jose wrote:

> I would like to do that using the mapper, but...
> In a PostgreSQL DB I have two tables Anag and User linked by Anag.c.id
> == User.c.anag_id
> Anag.c.id is a serial type, after inserted the Anag row, I want to  
> find
> the last id to insert it into the User table.
> I tried this code using the command
> select([func.max(Anag.c.id)]).execute().fetchone()[0]
> to have the last id, but it doesn't returns the last id but the  
> previous
> one.


when using the mapper, the primary key of any entity that's been  
flushed is available directly off the entity's attributes:

anag = Anag(
     name    = 'pippo',
     address = 'rue cinc',
     )
session.save(anag)
session.flush()

user = User(
     anag_id = anag.id
     )

also i would think the func.max() thing works, i dont know what you  
mean by "but it doesn't returns the last id but the previous one."   
though the big issue with using func.max() is that it wont behave  
consistently in a concurrent environment, since some other process or  
thread might insert into the table before you can get your last id.



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

Reply via email to