def insert(array):
connection=sqlite3.connect('images.db')
cursor=connection.cursor()
cnt=0
while cnt != len(array):
img = array[cnt]
print(array[cnt])
cursor.execute('INSERT INTO images VALUES(?)', (img))
cnt+= 1
connection.commit()
connection.close()
이 오류가 발생하는 이유를 알 수 없습니다. 삽입하려는 실제 문자열의 길이는 74 자입니다. “/ gifs / epic-fail-photos-there-i-fixed-it-aww-man-the -tire-pressures-low.gif “
삽입하기 전에 str (array [cnt])을 시도했지만 동일한 문제가 발생하며 데이터베이스에는 하나의 열만 있습니다 (텍스트 값).
나는 몇 시간 동안 그것을 보았고 무슨 일이 일어나고 있는지 알 수 없습니다.
답변
시퀀스를 전달해야하지만 매개 변수를 튜플로 만드는 쉼표를 잊어 버렸습니다.
cursor.execute('INSERT INTO images VALUES(?)', (img,))
쉼표 (img)
가 없으면 튜플이 아닌 그룹화 된 표현식이므로 img
문자열이 입력 시퀀스로 처리됩니다. 해당 문자열의 길이가 74자인 경우 Python은 각 문자 길이가 74 개인 별도의 바인드 값으로 인식합니다.
>>> len(img)
74
>>> len((img,))
1
읽기가 더 쉽다면 목록 리터럴을 사용할 수도 있습니다.
cursor.execute('INSERT INTO images VALUES(?)', [img])
답변
cursor.execute(sql,array)
두 가지 주장 만 취합니다.
“배열”객체를 반복하고 일치합니까? sql-string에서.
(sql-injection을 피하기 위해 온 전성 검사 포함)