2017-12-09 4 views
1

sqlite 데이터베이스에 저장된 liks에 대한 링크 목록을 비교하려고합니다. 데이터베이스의 링크를 가정sqlite with python, fetchall()

은 다음과 같습니다

link.com \

link.com \ 내가 가진

link.com \

페이지 3 페이지 2

페이지 1 주어진 링크가 데이터베이스에 존재할 경우 다음 코드를 작성하여 존재하지 않는 경우 추가합니다.

links = ['link.com\page2', 'link.com\page4'] 
c.execute('SELECT link FROM ads') 
previouslinks = c.fetchall() 

for l in links: 
    if l not in previouslinks: 
     c.execute('''INSERT INTO ads(link) VALUES(?)''', (l)) 
     conn.commit() 
    else: 
     pass 

문제는 링크가 데이터베이스에 경우에도 스크립트가 그것을 인식하지 못하는 것입니다! 내가 previouslinks 변수를 인쇄 할 때

는, 결과는 다음과 같이 보일 :

[('link.com\page1',), ('link.com\page2',), ('link.com\page3',)] 

나는 문제가 추가 괄호와 쉼표로 생각하지만 정확히 모르겠습니다.

답변

0

fetchall()은 행 목록을 반환합니다. 각 행은 모든 열 값을 포함하는 튜플입니다. 문자열을 포함하는 튜플은 문자열과 동일하지 않습니다.

당신은 행에서 값을 추출해야 (그리고 커서 반복 할 때 fetchall()이 필요하지 않습니다) :

previouslinks = [row[0] for row in c]