Я пытаюсь использовать execute many для обновления двух столбцов в базе данных sqlite3. Я использую pandas фрейм данных для хранения информации о некоторых файлах изображений tiff - их высоте, ширине (оба целых числа) и использую их имя файла (строку) в качестве предложения WHERE.
import ImageQA
import os
import sqlite3
home_directory = os.getcwd()
image_file_set = ImageQA.get_image_size(shelfmark_reference,working_directory)
#image_count = len(image_file_set))
tiff_file_list = list(image_file_set['TiffFile'])
height_list = list(image_file_set['Height'])
width_list = list(image_file_set['Width'])
zipped = zip(height_list,width_list,tiff_file_list)
file_list = list(zipped)
os.chdir(home_directory)
conn = sqlite3.connect('DigiFolio')
cursor = conn.cursor()
cursor.executemany('UPDATE Capture_information SET Height = ?,Width = ? WHERE TiffFileName =?',file_list)
conn.close()
Код выполняется хорошо, но когда я запрашиваю базу данных, чтобы убедиться, что информация была введена правильно, столбцы Высота и Ширина остаются пустыми.
Мне кажется, я знаю проблему, но не смог ее решить. С помощью ? пропуск третьего параметра означает, что в строке WHERE нет кавычек вокруг строки. Однако, если я поставлю кавычки вокруг вопросительного знака, я получу следующую ошибку: «Неверное количество предоставленных привязок. Текущий оператор использует 2, а поставлено 3». Предполагая, что кавычки визуализируют? не распознается как параметр.