2012-09-14 71 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

問題已解決。該查詢位於較大的查詢構建器函數中,該函數稍後在函數中將限制和偏移應用於查詢,因爲限制和偏移量高於返回結果集爲空的結果量。

可以阻塞這一個人,因爲人爲錯誤和睡眠不足。

相關問題