MySQLdb, необработанный запрос на Python и настраиваемый ПОРЯДОК ПО

#python #mysql-python

#python #mysql-python

Вопрос:

Я пытаюсь сделать следующее :

 query = "SELECT * FROM table ORDER BY %s %s"
parameters = ['avg', 'DESC']
  

Но параметры отображаются неправильно.

 SELECT * FROM table ORDER BY 'avg' 'DESC'
  

Вместо

 SELECT * FROM table ORDER BY avg DESC
  

Вы знаете почему?

Ответ №1:

Используя это:

 "SELECT * FROM table ORDER BY %s %s" % ('avg', 'DESC')
  

должно сработать.

Комментарии:

1. Хотя в зависимости от того, откуда берутся эти значения, у вас может возникнуть риск внедрения

2. Для этих параметров я могу предотвратить внедрение, но не для других, которые использовались ранее. Используя конкатенацию, я должен быть в состоянии сделать это раньше.

3. Это другая история (программная проблема), и вопрос был техническим. Но я согласен с вами 🙂

Ответ №2:

Вы не можете использовать параметры для динамического указания имен полей. Они указывают только значения.