使用sqlite在Django中进行查询过滤

时间:2010-09-04 06:18:01

标签: python django django-models sqlite

我用Django尝试了以下查询,

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 '\' 

查询失败,因为LIKE之后的文本没有引号。当我在sql提示符下运行查询时,查询成功,在LIKE之后用文本引用,如下所示

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

如何让Django在search_text周围添加引号,以便查询成功?

我正在使用带有sqlite3的Djanog

2 个答案:

答案 0 :(得分:1)

我用Postgresql 8.3尝试了这个。生成的查询没有引号。但是,执行过滤器会返回带有预期实例的有效查询集。你可以试试

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

看看它是否有效?

答案 1 :(得分:0)

将上述评论作为答案发布

事实证明查询在Django中有效,但当被要求打印查询时,如果我复制打印的查询并在mysql shell或sqlite shell中执行它,它就不起作用了。 Django可能打错查询