2012-04-08 8 views
0

나는 python을 사용하여 news.ycombinator RSS 피드를 읽고 sqlite3을 사용하여 데이터베이스에 저장합니다. 예를 들어, 데이터베이스에 공급되고있는 샘플 항목 (아이디, 제목, UR) ID가 자신의 의견 스레드의 URL의 웹 사이트에서 사용되는 주석 ID입니다데이터베이스 파이썬 sqlite3에서 중복 된 항목 반복

('3814508', 'Github is making me feel stupid(er)', 'http://www.serpentine.com/blog/2012/04/08/github-is-making-me-feel-stupider/') 

입니다. 위 목록은 ids, titleurl을 개별적으로 압축 한 다음 압축하여 작성한 것입니다. 이제 데이터베이스에 해당 항목을 복사하려고합니다.

import sqlite3 as lite 

con = lite.connect('/path/to/rss.db') 
con.text_factory = str 
cur=con.cursor() 
# --- Extract ids, links, urls ---- 
zipped = zip(ids, titles, targets) 
cur.execute("SELECT Id FROM Posts") 
existing_ids = cur.fetchall() 
for i in range(0,len(zipped)): 
    if ids[i] not in existing_ids: 
     cur.executemany("INSERT INTO Posts VALUES(?, ?, ?)", zipped) 

문제는 한 번에 30 개의 피드가 있다는 것입니다. 목록을 인쇄하면 정상적으로 작동하며 30 회의 결과가 표시됩니다. 나는 데이터베이스에 쓰기를 시도 할 때 많은 수의 항목은, 같은 서른 개 항목 이상 반복 테이블 "게시물"

sqlite> SELECT Count(*) FROM Posts; 
930 

DB를 스키마를 가지고 31 배 이상되어있다 CREATE TABLE Posts(Id TEXT, Title TEXT, Target TEXT);

답변

2

누락 된 항목을 찾으면 모든 항목의 전체 목록을 삽입하는 것처럼 보입니까? 아마도 이미 압축 된 각 튜플을 반복하고 각 튜플이 이미 존재하는지 확인하십시오.