2010-09-04 83 views
1

我試着使用Django下面的查詢過濾,查詢Django中使用SQLite

def search(search_text): 
    q = Info.objects.filter(title__contains=str(search_text)) 
    print q.query 

是還會打印查詢是

SELECT "d"."id", "d"."foo" FROM "d_info" WHERE "d_info"."title" LIKE %hello% ESCAPE '\' 

的查詢失敗有引號。當我喜歡後運行與周圍的文本引號中的SQL提示查詢像下面

SELECT "d"."id", "d"."foo" FROM "d_info" WHERE "d_info"."title" LIKE '%hello%' ESCAPE '\' 

如何讓Django的補充過來,以便查詢成功的SEARCH_TEXT引號中查詢獲得成功嗎?

我使用Djanog與sqlite3的

回答

0

發佈我的評論上面的答案

它使原來的查詢工作中的Django,但是當記者問到打印查詢,如果我複製查詢打印,並在mysql外殼或sqlite的外殼執行它,它不起作用。 Django可能是打印錯誤的查詢

1

我想這一點在PostgreSQL 8.3。查詢生成不帶引號。但是,執行過濾器會返回一個有效的查詢集和預期的實例。你可以嘗試執行

q = Info.objects.filter(title__contains=str(search_text)) 
print q.count() 

並查看它是否有效?

+0

它與我所擁有的沒有什麼不同。你的意思是別的嗎? – rampr 2010-09-11 07:07:15

+0

我打算問,你是否在(懶惰)查詢集後面執行查詢? '打印q.count()'會告訴你查詢是否觸發OK。 – 2010-09-11 07:15:50

+0

對不起,我錯過了第二條語句,它發現查詢在Django中可用,但當詢問是否打印查詢時,如果我在mysql shell或sqlite shell中執行相同的查詢,則不起作用。 Django可能打印錯誤的查詢。 – rampr 2010-09-13 09:45:35