비슷한 링크를 조사했지만 여전히이를 파악할 수 없습니다. 대부분의 다른 링크는 여러 행이나 열에 삽입하려고하지만 하나의 열에이 튜플 목록이 필요합니다.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
에 튜플의리스트를 전달하는 올바른 방법이 아니다
에 대한
14
- 쿼리 매개 변수로 튜플 항목? – alecxe@alecxe 별도의 문자열입니다. 다른 열로 입력하고 있습니다. 디버깅하는 동안, 나는 word_in_python을 db에 삽입하여 테스트를 해 보았습니다. 내 오류가 listOfTuples 삽입에 있다고 생각합니다. – zfa
목록은 blob이 아닙니다. 목록이 DB에 저장 될 때 정확히 어떻게 표시되어야합니까? –