Python/sqlite: 获取新插入行的主键

3 投票
1 回答
3010 浏览
提问于 2025-04-17 04:09

我正在用原始SQL插入一行数据,但我需要获取新插入行的主键。因为我不能假设其他插入的数据是唯一的,也不能假设这行是最后插入的。

如果用原始SQL做不到,那用“常规”的插入方法怎么样呢?我在想,我可能需要创建一个新的自定义ID字段。然后我会生成一个随机数字,把它作为唯一ID插入。因为是我插入的,所以我知道这个ID是什么。但这样似乎就失去了主键作为唯一标识符的意义。有没有办法像在Oracle中那样获取序列的下一个ID呢?

insert_sql = "insert into my_table(title, text) values ('the title', 'the text')"

cursor = connection.cursor()
cursor.execute(insert_sql)
transaction.commit_unless_managed()

1 个回答

4

... 我不能假设这一行是最后插入的那一行。

总的来说,你不能这样假设。但是在你的连接上下文中,你可以这样做——所以你可以使用 SELECT LAST_INSERT_ID() 或者直接用 cursor.connection.insert_id()。也许还可以用 cursor.lastrowid,不过我不确定这个是否也能用。

撰写回答