【问题标题】:Query filtering in Django with sqlite使用 sqlite 在 Django 中进行查询过滤
【发布时间】:2010-09-04 06:18:00
【问题描述】:

我用 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

【问题讨论】:

    标签: python django django-models sqlite


    【解决方案1】:

    我在 Postgresql 8.3 上试过了。生成的查询不带引号。但是,执行过滤器会返回一个带有预期实例的有效查询集。可以试试执行吗

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

    看看它是否有效?

    【讨论】:

    • 它和我拥有的没有什么不同。你还有别的意思吗?
    • 我的意思是问,你是否在(惰性)查询集后面执行了查询? Print q.count() 会告诉你查询是否成功。
    • 对不起,我错过了第二条语句,结果证明查询在 Django 中有效,但是当被要求打印查询并且如果我在 mysql shell 或 sqlite shell 中执行相同的查询时,它不会不工作。 Django 可能打印查询错误。
    【解决方案2】:

    在上面发表我的评论作为答案

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

    【讨论】:

      猜你喜欢
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 2018-01-31
      • 1970-01-01
      相关资源
      最近更新 更多