Python/sqlite: 获取新插入行的主键
我正在用原始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
,不过我不确定这个是否也能用。