我正在使用原始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()
…也不能假设该行是最后插入的行。
在全球范围内,您无法假设这一点。但是与您的连接有关,您可以-这样就可以使用SELECT LAST_INSERT_ID()或cursor.connection.insert_id()。甚至可以cursor.lastrowid,但是我不确定它是否也能正常工作。
SELECT LAST_INSERT_ID()
cursor.connection.insert_id()
cursor.lastrowid