我用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
答案 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可能打错查询