pythonsqliteflask

Sqlite. How to get value of Auto Increment Primary Key after Insert, other than last_insert_rowid()?


I am using Sqlite3 with Flask microframework, but this question concerns only the Sqlite side of things..

Here is a snippet of the code:

g.db.execute('INSERT INTO downloads (name, owner, mimetype) VALUES (?, ?, ?)', [name, owner, mimetype])
file_entry = query_db('SELECT last_insert_rowid()')
g.db.commit()

The downloads table has another column with the following attributes: id integer primary key autoincrement,

If two people write at the same time the code above could produce errors.

Transactions can be messy. In Sqlite is there a neat built in way of returning the primary key generated after doing an INSERT ?


Solution

  • The way you're doing it is valid. There won't be a problem if the above snipped is executed concurrently by two scripts. last_insert_rowid() returns the rowid of the latest INSERT statement for the connection that calls it. You can also get the rowid by doing g.db.lastrowid.