我正在使用SQLAlchemy在Flask上构建一个界面,其中一部分是一个搜索应用程序接口。实际上,预先键入的输入是用它的值调用服务器(例如,一封电子邮件),然后服务器在如下所示的过滤器中使用.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的项之后,即使数据库中存在匹配的项,也不会返回任何结果。
非常感谢您的帮助。
发布于 2012-09-14 14:03:13
问题已解决。这个查询位于一个更大的查询构建器函数中,该函数在后面的函数中对查询应用了限制和偏移量,因为限制和偏移量高于返回的结果的数量,返回的结果集为空。
这可能会导致严重的人为错误和睡眠不足。
https://stackoverflow.com/questions/12418400
复制相似问题