2011-10-12 4 views
1

원시 SQL을 사용하여 행을 삽입하고 새로 삽입 된 행의 기본 키를 가져와야합니다. 나는 비 PK 삽입 된 데이터가 고유하다고 가정하지도, 행이 마지막으로 삽입 된 행이라고 가정 할 수도 없습니다.Python/sqlite : 새로 삽입 된 행의 PK 가져 오기

원시 SQL을 사용할 수 없다면 "일반"삽입은 어때요? 나는 새로운 customID 필드를 모두 만들어야한다고 생각하고있다. 그런 다음 난수 변수를 만들어 고유 ID로 삽입합니다. 내가 그것을 삽입 한 이래로 나는 그것이 무엇인지를 안다. 그러나 그것은 PK를 고유 한 식별자로 사용하는 목적을 무력화시키는 것처럼 보입니다. 시퀀스의 다음 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() 

답변

3

... nor can I assume that the row is the last inserted row.

세계적으로, 당신은 그것을지지 않습니다. 그러나 연결과 관련하여 할 수 있습니다. SELECT LAST_INSERT_ID() 또는 cursor.connection.insert_id()을 사용할 수 있습니다. 어쩌면 심지어 cursor.lastrowid,하지만 잘 작동하는지 확실하지 않습니다.

+1

고마워요! cursor.lastrowid는 아름답게 작동했습니다. 그리고 그것은 지역입니다. cursor.connection.insert_id() 내게 오류가 발생했습니다 : 'sqlite3.Connection'개체의 속성이 없습니다 'insert_id' – user984003

+0

아야,'sqlite3'. 나는 MySQL에 대해 생각하지 않았다. – glglgl

관련 문제