SQLite insert or ignore and return original _rowid_
The way that worked the best for me was to insert or ignore
the values, and the select
the rowid in two separate steps. I used a unique
constraint on the data
column to both speed up selects and avoid duplicates.
sql.execute("INSERT OR IGNORE INTO foo(data) VALUES(?);" ("Some text.", ))
last_row_id = sql.execute("SELECT id FROM foo WHERE data = ?;" ("Some text. ", ))
The select
statement isn't as slow as I thought it would be. This, it seems, is due to SQLite automatically creating an index for the unique
columns.