Python Flask и Psycopg - запрос строки request.get в ГДЕ

Как правильно передать переменные строки запроса в flask в psycopg в качестве параметра в предложении WHERE?

В частности, если переменная не установлена, я не хочу, чтобы переменная была добавлена ​​в предложение WHERE:

 id = int(request.args.get('id'))
 cur.execute("SELECT * FROM data WHERE id = %s;", id)

Если id - None, я хочу SQL без предложения WHERE:

SELECT * FROM data

Это единственный способ сделать это с помощью оператора if?

1 ответ

Решение

Просто введите другой запрос, если нет (верно) id параметр запроса был предоставлен:

id = request.args.get('id', type=int)
if id is not None:
    cur.execute("SELECT * FROM data WHERE id = %s", (id,))
else:
    # No (valid) id given, give everything
    cur.execute("SELECT * FROM data")

Обратите внимание, что я использовал type Ключевой аргумент для MultiDict.get() метод; метод возвращает значение по умолчанию (None если не указано иное через default аргумент), если ключ отсутствует или не может быть преобразован в целое число.

Другие вопросы по тегам