2012-09-14 43 views
10

我使用SQLAlchemy在Flask上构建一个接口,并且它的一部分是搜索API。本质上,预先输入的输入呼吁其值(例如电子邮件)的服务器,然后服务器像下面字符串如何传递给SQLAlchemy的.like()方法

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

这个查询是不是真的返回执行在过滤器中使用。就像一个SQLAlchemy的查询任何有用的东西,在开头的几个字符之后,什么也没有。但是,如果我与术语执行相同的查询硬编码的,就像这样:

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

它会返回结果完全正常的,所以有一些与我是如何把长期进去就好了()方法,但我真的弄清楚问题是什么。这个术语来自ajax POST,价值在服务器端,只是.like()没有正确使用它。

“没有用处”我的意思是返回的第一组结果与输入的实际术语无关,长度超过3-4的术语没有结果返回,尽管匹配项存在于DB。

任何帮助非常感谢。

+1

你是否确定这个词是你期望的?如果在变量中创建类似字符串'%'+ term +'%'并打印变量,您是否获得了期望的结果?此外,“这个查询不是真的返回任何有用的东西”是什么意思?最后,考虑[开启日志记录](http://docs.sqlalchemy.org/en/rel_0_7/core/engines.html#configuring-logging)并查看SQL生成的实际内容。 –

+0

在我的烧瓶应用程序里面的方法中,我正在执行查询之前打印该术语,并且我可以看到该术语在我的控制台中弹出,所以该术语将它放入函数中。我只是试着在控制台上打印'%'+ term'%'和输出%myterm%。由于不太有用,我的意思是返回的第一组结果与该术语无关,在abotu3-4个字符之后,没有结果返回。 – jduren

回答

7

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

可以阻塞这一个人,因为人为错误和睡眠不足。

相关问题