Как перебрать массив и записать все данные из массива в sql запрос?
У меня есть функция, которая принимает массив с названием столбцов из таблицы sql (эти столбцы = int):
codes = [sp, cv, os, e] # это название столбцов в таблице
Мне надо доставать из массива все эти данные и доставать из sql запроса цену исходя из этих данных массива:
Код работает, но он достаёт значение только первого элемента массива, а надо всех!
Функция:
async def get_option_cost(codes, how_many_compressors, spiral_and_piston, model, price, cold, table):
if how_many_compressors == 2:
if spiral_and_piston == 'spiral':
if cold == 'low':
compressor = 'twoKM_Low_temperature_refrigeration_unit_model_spirals'
if cold == 'medium':
compressor = 'twoKM_Medium_temperature_refrigeration_unit_model_spirals'
if spiral_and_piston == 'piston':
if cold == 'low':
compressor = 'twoKM_Low_temperature_refrigeration_unit_model_semi_hermetic'
if cold == 'medium':
compressor = 'twoKM_Medium_temperature_refrigeration_unit_model_semi_hermetic'
if how_many_compressors == 3:
if spiral_and_piston == 'spiral':
if cold == 'low':
compressor = 'threeKM_Low_temperature_refrigeration_unit_model_spirals'
if cold == 'medium':
compressor = 'threeKM_Medium_temperature_refrigeration_unit_model_spirals'
if spiral_and_piston == 'piston':
if cold == 'low':
compressor = 'threeKM_Low_temperature_refrigeration_unit_model_semi_hermetic'
if cold == 'medium':
compressor = 'threeKM_Medium_temperature_refrigeration_unit_model_semi_hermetic'
if how_many_compressors == 1:
if cold == 'low':
compressor = 'oneKM_Low_temperature_refrigeration_unit_model_spirals'
if cold == 'medium':
compressor = 'oneKM_Medium_temperature_refrigeration_unit_model_spirals'
# НАШ SQL ЗАПРОС
for i in codes:
sql = cur.execute(f"SELECT {i} FROM {compressor} WHERE {table} = ?",(model,))
rows = cur.fetchall()
costs = [row[0] for row in rows]
return costs
Ответы (2 шт):
Автор решения: CrazyElf
→ Ссылка
Забирайте сразу все столбцы.
sql = cur.execute(f"SELECT {','.join(codes)} FROM {compressor} WHERE {table} = ?",(model,))
Автор решения: Garetj 37
→ Ссылка
Изменил sql запрос и поправил свой цикл for:
sql = cur.execute(f"SELECT {','.join(codes)} FROM {compressor} WHERE {table} = ?",(model,))
# Извлечение стоимостей
rows = cur.fetchall()
for row in rows:
costs = row