Параметризованный запрос Python MySQL конфликтует с подстановочным знаком% в операторе LIKE
Мой запрос на выполнение этого не удается:
cursor.execute("SELECT name FROM products WHERE rating > %s AND category like 'Automation %'", (3));
Потому что он запутывается в процентном использовании по двум различным причинам - в качестве подстановочного знака LIKE и в качестве параметра при выполнении Python MySQL DB.
Если я запускаю этот запрос следующим образом, он работает:
cursor.execute("SELECT name FROM products WHERE rating > 3 AND category like 'Automation %'");
Если я запускаю запрос, как показано ниже, он снова работает:
cursor.execute("SELECT name FROM products WHERE rating > %s AND category = 'Automation '", (3));
Но это не решение. Я хочу использовать подстановочный знак и параметр.
Я нашел обходной путь, который должен передать мой постоянный шаблон в качестве переменной:
cursor.execute("SELECT name FROM products WHERE rating > %s AND category like %s", (3, 'Automation %'));
Это работает, но мне нужно более элегантное решение. Я не хочу передавать константы как переменные. Мой оператор SQL может содержать много операторов LIKE в большом запросе.