Sqlite3.ProgrammingError: Неправильное количество привязок. В текущем заявлении используется 1, и имеется 74 поставленных

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.

Я был у него часами, и я не могу понять, что происходит.

Ответ 1

Вам нужно пройти в последовательности, но вы забыли запятую, чтобы сделать ваши параметры кортежем:

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])