Могу ли я использовать вставку параметров, чтобы указать имена столбцов для запросов MySQL? - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу знать, возможно ли использовать вставку параметров для имен столбцов в запросы MySQL, используя Python.

Рассмотрим следующие два запроса, оба из которых передаются MySQLCursor.execute().Первый:

query = (
      'SELECT username, COUNT(*)'
      'FROM `entry`'
      'GROUP BY username;'
)
cursor.execute(query)

А второй:

query = (
      'SELECT %s, COUNT(*)'
      'FROM `entry`'
      'GROUP BY %s;'
)
data = ('username', 'username')
cursor.execute(query, data)

Первый из них возвращает ожидаемые результаты (подсчет каждого, сколько раз отдельное значение появляется в столбце имени пользователя)), а второй возвращает неожиданные результаты, в частности [(u'username', n)], где n - общее количество строк в базе данных.

Проблема во втором запросе заключается в том, что параметры интерпретируются запросом как строка,Есть ли способ вставить их так, чтобы их можно было интерпретировать как нестроковые?Я хочу сделать это так, чтобы это было безопасно от инъекционных атак.

1 Ответ

0 голосов
/ 06 февраля 2019

Не рекомендуется использовать 2-й синтаксис, 1-й в порядке и безопасен.

...