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

时间:2012-09-14 05:00:58

标签: sql ajax sqlalchemy flask sql-like

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

q = session.query(User).filter(User.email.like('%'+term+'%')).all()

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

q = session.query(User).filter(User.email.like('%mysearchterm%')).all()

它会很好地返回结果,所以我会把这个术语放到like()方法中,但我真的无法弄清楚问题是什么。该术语来自ajax POST,值在服务器端,只是.like()没有正确使用它。

“没什么用处”我的意思是回来的第一组结果与输入的实际条款无关,在长度超过3-4的条款之后,尽管存在匹配的项目,但没有返回结果DB。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:7)

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

可以将这个问题归咎于人为错误和睡眠不足。