Это еще один метод, который заслуживает упоминания здесь ast.literal_eval :
. Это можно использовать для безопасной оценки строк, содержащих выражения Python, из ненадежных источников без необходимость разбирать значения.
То есть безопасный 'eval'
>>> import ast >>> ast.literal_eval("545.2222") 545.2222 >>> ast.literal_eval("31") 31
Вам нужно пройти в последовательности, но вы забыли запятую, чтобы сделать ваши параметры кортежем:
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])