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
аргумент), если ключ отсутствует или не может быть преобразован в целое число.