Я использую Sqlite3 с микроплатформой Фляги, но этот вопрос касается только стороны Sqlite вещей..
Вот отрывок кода:
g.db.execute('INSERT INTO downloads (name, owner, mimetype) VALUES (?, ?, ?)', [name, owner, mimetype])
file_entry = query_db('SELECT last_insert_rowid()')
g.db.commit()
downloads
таблица имеет другой столбец со следующими атрибутами: id integer primary key autoincrement,
Если два человека пишут одновременно, что код выше мог бы произвести ошибки.
Транзакции могут быть грязными. В Sqlite там аккуратное, созданное способом возвратить первичный ключ, сгенерированный после выполнения ВСТАВКИ?
Способ, которым вы это делаете, является правильным. Не будет проблемы, если приведенный выше фрагмент будет выполняться одновременно двумя скриптами. last_insert_rowid()
возвращает rowid последнего оператора INSERT для вызывающего его соединения. Вы также можете получить rowid, выполнив g.db.lastrowid
.