字符串是如何传递给SQLAlchemy的.like()方法的

jdu*_*ren 10 sql ajax sqlalchemy flask sql-like

我正在使用SQLAlchemy在Flask上构建一个接口,其中一部分是搜索API.本质上,提前输入是使用其值(例如电子邮件)调用服务器,然后服务器在下面的过滤器中使用.like执行SQLalchemy查询

q = session.query(User).filter(User.email.like('%'+term+'%')).all()
Run Code Online (Sandbox Code Playgroud)

这个查询并没有真正返回任何有用的东西,并且在前几个字符之后,什么都没有.但是,如果我使用术语硬编码执行相同的查询,如下所示:

q = session.query(User).filter(User.email.like('%mysearchterm%')).all()
Run Code Online (Sandbox Code Playgroud)

它将返回结果完全正常,所以我将这个术语放入like()方法有一些东西,但我真的无法弄清楚问题是什么.该术语来自ajax POST,值在服务器端,只是.like()没有正确使用它.

"没有用"我的意思是返回的第一组结果与输入的实际术语无关,在长度高于3-4的术语之后,尽管DB中存在匹配的项目,但没有返回结果.

任何帮助非常感谢.

jdu*_*ren 7

问题已经解决.此查询位于较大的查询构建器函数内部,该函数稍后在函数中对查询应用限制和偏移量,因为限制和偏移量高于返回结果集为空的结果量.

这可能会导致人为错误和睡眠不足.