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。
任何幫助非常感謝。
你是否確定這個詞是你期望的?如果在變量中創建類似字符串'%'+ term +'%'並打印變量,您是否獲得了期望的結果?此外,「這個查詢不是真的返回任何有用的東西」是什麼意思?最後,考慮[開啓日誌記錄](http://docs.sqlalchemy.org/en/rel_0_7/core/engines.html#configuring-logging)並查看SQL生成的實際內容。 –
在我的燒瓶應用程序裏面的方法中,我正在執行查詢之前打印該術語,並且我可以看到該術語在我的控制檯中彈出,所以該術語將它放入函數中。我只是試着在控制檯上打印'%'+ term'%'和輸出%myterm%。由於不太有用,我的意思是返回的第一組結果與該術語無關,在abotu3-4個字符之後,沒有結果返回。 – jduren