웹사이트 스크래핑을 시도해 봤습니다. 현재 데이터베이스 테이블에서 데이터를 성공적으로 스크랩했습니다. 하지만 "현재 테이블"에 레코드가 없는 경우에만 "new_table"을 삽입하고 싶습니다
내 코드는 (파이프라인)입니다
으아아아제대로 작동하지 않고 오류가 납니다.
으아아아고유한 product_id가 있습니다.
현재 테이블에 product_id가 없으면 이 product_id를 "new_products"에 삽입하세요
이걸 어떻게 만드나요?
감사합니다.
최종 편집: 이 오류가 발생합니다.
으으으으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 변수가 존재하지 않으므로 수정해야 합니다