Operador LIKE do SQLAlchemy, substituição variável com% de expansão
Sou bastante novo em Python e atualmente estou querendo aprender a estrutura do Flask antes de passar para estruturas maiores, como o Django, mas agora tenho uma pergunta sobre o SQLAlchemy.
Estou tentando obter uma consulta em uma variável chamada results, na qual consulta o banco de dados para encontrar os livros com um título como a entrada da barra de pesquisa recebida de um método de postagem. A consulta que estou executando é a seguinte:
results = db.execute("SELECT * FROM books WHERE title .like(%:search%)", {"search" : search}).fetchall();
Com a consulta acima, recebo o seguinte erro: sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) erro de sintaxe igual ou próximo a "%".
Isso funciona como esperado se eu remover o%, ou se eu der manualmente um parâmetro à função .like (por exemplo: .like ("% the%")), mas isso realmente não retornará nenhum resultado, a menos que a pesquisa seja exatamente como qualquer outra de títulos de livros no banco de dados e isso anula o propósito de usar a substituição de variáveis, codificando os parâmetros.Eu também estou imaginando se é possível usar o ILIKE para consultas sem distinção de maiúsculas e minúsculas com SQLAlchemy.
Estou ciente de que poderia usar o Mapeamento relacional de objetos e usar funções diferentes, como a função de filtro e outros enfeites, mas, para esta atribuição, não devemos usar o ORM nem usar consultas simples. Alguma sugestão?
desde já, obrigado