Dr_Elvis
@Dr_Elvis
В гугле забанен

Как выгрузить данные с условием?

Привет!
Имеется web страница в котором есть 3 select для фильтрации. В каждом есть вариант "Все".
На бэке, который на flask с psycopg2, есть sql запрос, который добавляет условия where если по какому либо параметру приходит не "Все". данные на сервер отправляются fetch POST запросом.
Итого с фронта, например, приходят 3 параметра:
param1: Все
param2: Все
param3: 10

на беке я вытаскиваю эти данные и по условию добавляю нужные where:
s = "select * from table "
s += "where 1=1 "
if request.form['param1'] != 'Все':
    s += "and one = %s "
if request.form['param2'] != 'Все':
    s += "and two = %s "
if request.form['param3'] != 'Все':
    s += "and three = %s"

Итого получаю запрос вида select * from table where 1=1 and three = %s
Теперь собственно вопрос, как правильнее сделать execute? Мне же нужно передать только 1 параметр, который третий.
Пока на ум приходит только сделать еще условий, на каждую ситуацию, но думаю что это как то не очень.
  • Вопрос задан
  • 44 просмотра
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
params = []
s = "select * from table "
s += "where 1=1 "
if request.form['param1'] != 'Все':
    s += "and one = %s "
    params.append(request.form['param1'])
if request.form['param2'] != 'Все':
    s += "and two = %s "
    params.append(request.form['param2'])
if request.form['param3'] != 'Все':
    s += "and three = %s"
    params.append(request.form['param3'])

rows = cursor.execute(s, tuple(params))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы