January 31, 2023

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 74 supplied


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

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