Как сделать execute_values ​​безопасным? - PullRequest
0 голосов
/ 06 мая 2019

Я использую следующий фрагмент для вставки некоторых значений:

execute_values(
  dest_cursor,
  f'''
  INSERT INTO {tName}({tColumns}) VALUES %s;
  ''',
  records,
  template=customTemplate,
)

Однако при чтении документов я обнаружил некоторые предупреждения об SQL-инъекциях, например здесь :

Предупреждение Никогда, никогда, НИКОГДА не используйте конкатенацию строк Python (+) или интерполяцию строковых параметров (%) для передачи переменных в строку запроса SQL. Даже под дулом пистолета.

Однако это невозможно (поскольку я не могу передать несколько параметров в execute_values):

execute_values(
  dest_cursor,
  'INSERT INTO %s (%s) VALUES %s;',
  (tName, tColumns, records),
  template=customTemplate,
)

Есть ли способ улучшить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...