Параметризация должна использоваться для сантитизации значения переменной, которое используется для формирования части законченного SQL - например, 7
в запросе, таком как SELECT * FROM user WHERE ID = 7
.Вы не можете параметризовать целый раздел SQL так, как вы это делаете - и действительно, в этом не должно быть необходимости.
Я не знаю Python конкретно, но логически я думаю, что ваш код должен быть:
query = "SELECT COL1 FROM A_TABLE WHERE COL1 = %s"
queryUserInput = "user input value"
cursor.execute(query, (queryUserInput,))
для того, чтобы он только параметризовал фактический пользовательский ввод, а не какой-либо из SQL.
(Ваш исходный код выдаст строку SQL, похожую на SELECT COL1 FROM A_TABLE 'WHERE COL1 = \'user input value\''
, которая явноSQL вообще не является допустимым, поскольку после A_TABLE все содержится в строковом литерале.)
В этой документации (метода execute ()) показаны некоторые другие примеры правильного использования: https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-execute.html