2010-09-04 46 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