【发布时间】:2020-01-31 09:06:49
【问题描述】:
我正在尝试使用 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()
代码运行良好,但是当我查询数据库以查看是否已正确输入信息时,Height 和 Width 列仍然为空。
我想我知道问题所在,但还没有设法解决它。使用 ?传递第三个参数意味着 WHERE 语句中的字符串周围没有任何引号。但是,如果我在问号周围加上引号,我会收到以下错误 - “提供的绑定数量不正确。当前语句使用 2,提供了 3 个。”建议引号呈现 ?不是不可识别的参数。
【问题讨论】: