Ошибка Python3 Sqlite3 [дубликат]

Это еще один метод, который заслуживает упоминания здесь ast.literal_eval :

. Это можно использовать для безопасной оценки строк, содержащих выражения Python, из ненадежных источников без необходимость разбирать значения.

То есть безопасный 'eval'

>>> import ast
>>> ast.literal_eval("545.2222")
545.2222
>>> ast.literal_eval("31")
31

101
задан Martijn Pieters 31 May 2014 в 09:53
поделиться

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])
223
ответ дан Martijn Pieters 25 August 2018 в 12:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: