Использование executemany в SQLite3 для оператора UPDATE - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь использовать 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». Предполагая, что кавычки визуализируют? не распознается как параметр.

1 Ответ

0 голосов
/ 31 января 2020

Нет необходимости заключать в кавычки строковые поля, на самом деле это может вызвать проблемы, как вы обнаружили. Однако ...

Из API python sqlite выполните c:

commit ()

Этот метод фиксирует текущую транзакцию. Если вы не вызываете этот метод, все, что вы сделали после последнего вызова commit (), не будет видно из других соединений с базой данных. Если вам интересно, почему вы не видите данные, которые вы записали в базу данных, убедитесь, что вы не забыли вызвать этот метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...