我正在使用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后生成的主键?
答案 0 :(得分:30)
你这样做的方式是有效的。如果上述剪切由两个脚本同时执行,则不会出现问题。 last_insert_rowid()
返回调用它的连接的最新INSERT语句的rowid。你也可以通过g.db.lastrowid
获得rowid。