Lie Ryan <lie.1296 <at> gmail.com> writes: > In python-sqlite, the rowid of the > last insert operation can be queried using cursor.lastrowid. Therefore, > you can query the lastrowid, right after the insert, to find the primary > key of the value you had just inserted. So, in code: > > ... > cur = conn.execute('INSERT ... ') > pk = cur.lastrowid > ... > > or even: > > ... > pk = conn.execute('INSERT ... ').lastrowid > ... > > Be careful that in multithreaded program, each thread should have their > own cursors, or otherwise another thread could possibly do another > insert before you can query the lastrowid. >
okay, this touches on something that had been worrying me a bit... whether another insert could hit before I queried for the lastrowid, regardless of how I did it. So you're saying that as long as I have the one cursor open, the lastrowid it gets will be the lastrowid from its operations, regardless of other commits or transactions that may have happened in the meantime? > > In general, despite the superficial similarities, most database engine > wrappers have their own ways of doing stuffs. Generally, you need a > full-blown ORM to smooth out the differences. > So... what would be considered a 'full-blown' ORM? SQLobject or SQLalchemy... or something else? Thanks, Monte _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor