@m-kicherov

Как сделать безопасно строку с sql запросом и различными параметрами?

Добрый день. Подскажите безопасно ли выполнять запросы сформированные таким образом, смущает f строка. И как реализовать кавычки для условий с строковыми столбцами.

def objects(**kwargs):
    query = '''
    SELECT id as oid, name, ct_date, info
    FROM "test".public."Сourier"
    %(where)s;
    '''
    
    return query % {'where': f"WHERE {' AND '.join([f'{key} = {value}' for key, value in kwargs.items()])}" if kwargs else ''}
    
print(objects(display_name=1, info='test'))

---Вывод
SELECT id as oid, name, ct_date, info
FROM "test".public."Сourier"
WHERE display_name = 1 AND info = test;
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
Vindicar
@Vindicar
Имена таблиц и столбцов можно подставлять f-строкой, если у тебя нет другого выбора и ты гарантируешь, что туда не попадёт пользовательский ввод.
Для значений нужно использовать подстановку параметров.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat
{PHP, MySql, HTML, JS, CSS} developer
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы