Я использую SQLAlchemy с PostgreSQL, и мне нужно сгенерировать оператор типа
SELECT * FROM entities WHERE name LIKE '%input%';
, где «входной» бит строки LIKE поступает от пользователя.Я хотел бы, чтобы пользователь мог включать буквальные символы %
и _
и точно совпадать с ними, и, очевидно, мне нужно убедиться, что запрос не допускает SQL-инъекцию.Какой идиоматический способ сделать это в SQLAlchemy?Я попытался
entities = session.query(Entity).filter(Entity.name.like('%:text%')) \
.params(text=user_input).all()
, но, похоже, это не сработало - оно выполнялось без жалоб, но не совпадало со строками, которые должны были совпадать.