Как строки передаются методу SQLAlchemy.like()
Я создаю интерфейс на Flask с использованием SQLAlchemy, а часть его - API поиска. По существу вход ввода типа требует вызова сервера с его значением (например, электронной почты), а затем сервер выполняет запрос SQLalchemy с использованием .like в фильтре, как показано ниже.
q = session.query(User).filter(User.email.like('%'+term+'%')).all()
Этот запрос не возвращает ничего полезного, и после первых нескольких символов ничего не происходит. Но если я выполняю тот же запрос с термином hardcoded, например:
q = session.query(User).filter(User.email.like('%mysearchterm%')).all()
Он отлично вернет результаты, поэтому есть что-то с тем, как я помещаю этот термин в метод like(), но я действительно не могу понять, в чем проблема. Термин приходит от ajax POST, и значение присутствует на стороне сервера, просто .like() не использует его правильно.
Под "ничего полезного" я имею в виду, что первые наборы результатов, которые возвращаются, не имеют никакого отношения к введенному фактическому члену, после того, как срок больше 3-4, результаты не возвращаются, несмотря на сопоставление элементов, существующих в БД.
Любая помощь очень ценится.
Ответы
Ответ 1
Проблемы были решены. Этот запрос находился внутри большей функции построителя запросов, которая применяла ограничение и смещение к запросу позже в функции, поскольку предел и смещение были выше, чем количество результатов назад, когда возвращаемый набор результатов был пустым.
Может забить это до плохой человеческой ошибки и отсутствия сна.