2016-06-06 5 views
0

비슷한 링크를 조사했지만 여전히이를 파악할 수 없습니다. 대부분의 다른 링크는 여러 행이나 열에 삽입하려고하지만 하나의 열에이 튜플 목록이 필요합니다.Python - SQLite의 한 열에 튜플 목록 삽입

conn = sqlite3.connect('mydb.db') 
c = conn.cursor() 
c.execute("INSERT OR IGNORE INTO saved_words (word, data) VALUES (?, ?)", (word_in_python, [listOfTuples])) 
conn.commit() 
conn.close() 

나는 INSERT 필요하거나 단어 열이 때문에 DB에 입력 할 수 없습니다 단어를 중복 고유 열이기 때문에 무시 :

word_in_python = cat 
listOfTuples = [('word1', 12), ('word2', 14), ('word3', 4), ('word5', 23)] 

여기 내 코드입니다.

I가 변경 시도했다 :이 작품의

c.execute("INSERT OR IGNORE INTO saved_words (word, data) VALUES (?, ?)", (word_in_python, (listOfTuples,))) 

c.executemany("INSERT OR IGNORE INTO saved_words (word, data) VALUES (?, ?)", (word_in_python, [listOfTuples])) 

for each in listOfTuples: 
    c.executemany("INSERT OR IGNORE INTO saved_words (word, data) VALUES (?, ?)", (word_in_python, (each[0], each[1]))) 

없음.

내가 일반적으로 점점 오전 오류 : 나는 또한이 오류로 혼동하고있어

Incorrect number of bindings supplied. The current statement uses 2, and there are 5 supplied. 

. 내 실행 행에서 (?,?)는 2 개의 바인딩을 입력하려고한다는 것을 이해합니다. 튜플의 내 목록에는 튜플 수가 10 개가 있으므로 제공된 바인딩이 어디에서 왔는지 확실하지 않습니다.

또한 내 saved_words 테이블에는 BLOB 유형의 데이터 열이 있습니다. 이 목록을 삽입하는 것이 가장 좋을 것이라고 생각했습니다.

편집

내가 원하는 것은 하나의 열 및 다음 열 listOfTuples에서 word_in_python (고양이)이며,이 모든 하나의 행입니다.

이 경우
c.executemany("INSERT OR IGNORE INTO saved_words (word, data) VALUES (?, ?)", listOfTuples)) 

, 데이터베이스 드라이버를 사용하여 목록에있는 모든 튜플에 대한 문을 실행합니다 : word_in_python이 무엇인지,하지만 executemany에 튜플의리스트를 전달하는 올바른 방법이 아니다

+0

에 대한 14 - 쿼리 매개 변수로 튜플 항목? – alecxe

+0

@alecxe 별도의 문자열입니다. 다른 열로 입력하고 있습니다. 디버깅하는 동안, 나는 word_in_python을 db에 삽입하여 테스트를 해 보았습니다. 내 오류가 listOfTuples 삽입에 있다고 생각합니다. – zfa

+0

목록은 blob이 아닙니다. 목록이 DB에 저장 될 때 정확히 어떻게 표시되어야합니까? –

답변

0

이있다 word에 대한 word1, data에 대한 12, word에 대한 다음 word2 등 데이터`word_in_python`은 무엇입니까

+0

word_in_python에 대한 설명을 게시하도록 편집했습니다. 사실 튜플의 첫 번째 단어가 아닌 별도의 문자열입니다. – zfa