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-all- человек-The-шин-давление-low.gif"
Я пытаюсь использовать str (array [cnt]) перед его вставкой, но та же проблема возникает, база данных содержит только один столбец, который является значением TEXT.
Я был у него часами, и я не могу понять, что происходит.
Вам нужно пройти в последовательности, но вы забыли запятую, чтобы сделать ваши параметры кортежем:
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])