33

我正在将 Sqlite3 与 Flask 微框架一起使用,但这个问题只涉及 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 中是否有一种巧妙的内置方式来返回执行 INSERT 后生成的主键?

4

1 回答 1

39

你这样做的方式是有效的。如果上面的片段由两个脚本同时执行,则不会有问题。last_insert_rowid()返回调用它的连接的最新 INSERT 语句的 rowid。你也可以通过做得到rowid g.db.lastrowid

于 2010-08-09T16:26:42.837 回答