A consulta parametrizada do MySQL em Python está em conflito com% curinga na instrução LIKE
Minha consulta na execução disso falha:
cursor.execute("SELECT name FROM products WHERE rating > %s AND category like 'Automation %'", (3));
Porque fica confuso sobre o uso percentual por dois motivos diferentes - como um curinga LIKE e como um parâmetro na execução do MySQL db em python.
Se eu executar esta consulta assim, ela funcionará:
cursor.execute("SELECT name FROM products WHERE rating > 3 AND category like 'Automation %'");
Se eu executar a consulta como abaixo, ela funcionará novamente:
cursor.execute("SELECT name FROM products WHERE rating > %s AND category = 'Automation '", (3));
Mas isso não é uma solução. Eu quero usar o curinga e o parâmetro.
Eu encontrei uma solução alternativa, que deve passar no meu curinga constante como uma variável:
cursor.execute("SELECT name FROM products WHERE rating > %s AND category like %s", (3, 'Automation %'));
Isso funciona, mas eu preciso de uma solução mais elegante. Não quero passar constantes como variáveis. Minha instrução SQL pode ter muitas instruções LIKE em uma grande consulta.