Выбор ответа Middle Чтение и запись данных обновлено

Параметры в pd.read_sql

Вопрос

Как правильно подставить дату из переменной в запрос pd.read_sql?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Через params и плейсхолдер драйвера, например %(d)s. Параметры, переданные через params, экранирует драйвер: нет SQL-инъекций и проблем с кавычками и типами. f-строка, format и конкатенация вставляют значение в текст запроса.

Варианты ответа

  1. f-строкой: f"... WHERE dt >= '{d}'" с кавычками
  2. Через params и плейсхолдер драйвера, например %(d)sправильный ответ
  3. Через .format(d=d) с ручным экранированием кавычек
  4. Конкатенацией строк, если d берётся из своего кода

Разбор

Параметры, переданные через params, экранирует драйвер: нет SQL-инъекций и проблем с кавычками и типами. f-строка, format и конкатенация вставляют значение в текст запроса. Даже если сегодня значение «своё», завтра его начнут брать из ввода пользователя.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме