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-aww-man-the -tire-давление-low.gif»
Я попытался str (array [cnt]) перед его вставкой, но та же проблема возникает, у базы данных только один столбец, который является значением TEXT.
Я занимаюсь этим часами и не могу понять, что происходит.
%
Оператор onstr
выполняет такую магию - он рассматривает кортеж как множественные значения, ноstr
(или любой другой тип итерации) как одно значение. Но это вызывает путаницу гораздо чаще, чем решает ее, поэтому почти ничего другого в stdlib не пытается подобного рода магии.%s
также не рекомендуется из соображений безопасности - docs.python.org/3/library/sqlite3.htmlТолько принимает два аргумента.
Он будет повторять «массив» -объект и совпадать? в sql-строке.
(с проверкой работоспособности, чтобы избежать sql-инъекций)
источник