On Apr 30, 2008, at 3:45 PM, Eric Lemoine wrote:
>
> With psycopg2, I know people using this:
>
> sql = "INSERT INTO \"%s\" (%s) VALUES (%s)" % (self.table, columns,
> values)
> cursor = db.cursor()
> cursor.execute(str(sql), values)
> cursor.execute("SELECT currval('%s');" % sequence_name)
> id = cursor.fetchone()[0]
> self.db.commit()
>
> I'm wondering if this is safe. And if so, if there's a way to do the
> same with SA.
>
this is a slight bit less safe than SQLA's default practice, in the
sense that if the application used the same connection in two
concurrent threads (which is a bad practice in itself), the results
may be incorrect.
What I dont see above is how the sequence is getting executed. Is the
column a SERIAL column, and the sequence is executed automatically ?
or is the "nextval(seqname)" embedded into the VALUES clause above
literally ?
also still curious why usage of "currval" is even needed.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" 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/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---