我使用原始SQL插入一行,需要获取新插入行的主键。我不能假设任何非PK插入的数据都是唯一的,也不能假设该行是最后插入的行。
如果使用原始SQL无法实现,那么“常规”插入怎么样?我想我将不得不创建一个新的customID字段。然后我会创建一个随机数变量并将其作为唯一ID插入。因为我插入它,我知道它是什么。但这似乎打败了将PK作为唯一标识符的目的。有没有办法提取序列的下一个ID(如在Oracle中)?
insert_sql = "insert into my_table(title, text) values ('the title', 'the text')"
cursor = connection.cursor()
cursor.execute(insert_sql)
transaction.commit_unless_managed()
答案 0 :(得分:3)
...我也不能假设该行是最后插入的行。
在全球范围内,你不能假设它。但与您的关联相关,您可以 - 因此您可以使用SELECT LAST_INSERT_ID()
或cursor.connection.insert_id()
。甚至可能cursor.lastrowid
,但我不确定它是否会起作用。