찾다

 >  Q&A  >  본문

'현재 테이블'에 레코드가 없는 경우에만 'new_table'에 INSERT를 스크랩합니다.

웹사이트 스크래핑을 시도해 봤습니다. 현재 데이터베이스 테이블에서 데이터를 성공적으로 스크랩했습니다. 하지만 "현재 테이블"에 레코드가 없는 경우에만 "new_table"을 삽입하고 싶습니다

내 코드는 (파이프라인)입니다

으아아아

제대로 작동하지 않고 오류가 납니다.

으아아아

고유한 product_id가 있습니다.

현재 테이블에 product_id가 없으면 이 product_id를 "new_products"에 삽입하세요

이걸 어떻게 만드나요?

감사합니다.

최종 편집: 이 오류가 발생합니다.

으으으으

P粉122932466P粉122932466243일 전387

모든 응답(1)나는 대답할 것이다

  • P粉278379495

    P粉2783794952024-03-30 00:30:37

    존재하지 않는 경우에만 삽입하려는 경우에는 하려는 작업을 수행할 필요가 없습니다. 모두 선택하고 원하는 것이 있는지 확인할 필요가 없습니다.

    필요한 것은 표 2의 produc_id에 대한 고유 인덱스

    를 만드는 것입니다.

    그런 다음 코드를 다음으로 변경하세요.

    으아악

    ON DUPLICATE KEY를 사용하는 경우 중복 행(이미 기존 product_id)이 발견되면 시스템은 product_id를 동일한 product_id로 업데이트하려고 시도하므로 적용되지 않습니다.

    autocommit=True로 설정하면 해당 커밋을 삭제할 수 있습니다.

    편집

    댓글에서 말씀하신 것처럼 테이블에 없는 경우에만 새 테이블에 삽입해야 하는 경우 코드를 다음과 같이 변경할 수 있습니다.

    매개변수의 값을 변경하기 때문에 old_ids = [row[0] for row incursor.fetchall()]row 행의 변수 이름을 변경해야 합니다. 2. 문제는 if 문에 있습니다. product_id 변수가 존재하지 않으므로 수정해야 합니다

    으아악

    회신하다
    0
  • 취소회신하다