У меня есть большие базы данных, для которых я использую SQL-запрос в Python для записи данных в CSV-файлы. В базе данных sql каждая строка представляет собой последовательность пространственной информации для идентификатора пальца. Я могу параметризовать запрос, чтобы получить информацию и записать нужные мне файлы для каждого пальца. Однако проблема возникает при создании функционала для цикла, который выполняет итерации по каждому идентификатору для всех индексов в списке.
INDEX = ([44,48,50,55,56,57], [49,54,57,61,62,64])
FINGER = ('rt100', 'rt101')
d = {}
for Y,X in FINGER, INDEX:
d[Y] = pd.read_sql ("SELECT x,y, CAST( (direction*180/3.142)as INT),CAST(quality*100 as INT) from UTS_7_fingerprints where finger like ? and ind = ?", conn, params=(Y,X,))
Это код, который у меня есть в настоящее время, однако я получаю эту ошибку:
pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT x,y, CAST( (direction*180/3.142)as INT),CAST(quality*100 as INT) from UTS_7_fingerprints where finger like ? and ind = ?': Error binding parameter 0 - probably unsupported type.
Даже используя попытку цикла для одного идентификатора и одного списка индексов, я получаю ошибку, что слишком много значений для распаковки.
Кажется, я не могу найти способ включить список в оператор SQL.
Чтобы было ясно, что я пытаюсь сделать. Мне нужно перебрать идентификаторы, такие как «rt100» для каждого индекса в списках «[44,48,50,55,56,57]» и получить данные «SELECT x, y, CAST ((direction * 180 / 3.142») ) как INT), CAST (качество * 100 как INT) 'для каждого индекса и идентификатора.
Это создает файл .csv, который выглядит следующим образом:
372,402,281,83
394,303,303,97
415,422,123,86
458,328,292,95
464,487,112,96
483,389,303,95