2014-11-07 2 views
0

행이 있는지를 확인하는 가장 빠른 방법은 확인조차하지 않지만 새 데이터를 삽입 할 때는 INSERT IGNORE를 사용하는 것입니다. 이것은 내 응용 프로그램에 가장 좋습니다. 그러나 삽입이 무시되었는지 (또는 반대로 행이 실제로 삽입되었는지) 확인할 수 있어야합니다.Python MySQLdb/MySQL INSERT IGNORE & Ignored 경우 검사

나는 try/catch를 사용할 수 있지만 그다지 우아하지는 않습니다. 누군가가 더 깔끔하고 우아한 솔루션을 원할 수 있기를 바랬습니다.

답변

0

자연스럽게 질문을 게시 한 후 최종 검색 결과가 나타납니다.

mysql - after insert ignore get primary key

그러나이 여전히 데이터베이스에 두 번째 여행을 필요로한다. 단일 쿼리로이 작업을 수행 할 수있는 깨끗한 비법이 있는지 알고 싶습니다.

query = "INSERT IGNORE ..." 
cursor.execute(query) 

# Last row was ignored 
if cursor.lastrowid == 0: 

이 쿼리는 INSERT를 무시 않으며, 인서트 (중복)을 무시되면, lastrowid이 항상 사실이 아니다 0

+0

될 것입니다. 테이블의 기본 키가 자동 증가로 설정되지 않은 경우 cursor.lastrowid는 삽입 또는 무시되었는지 여부에 관계없이 항상 0입니다. (나는 그것이 단지 나에게 일어났기 때문에 나는 알고있다!) –