zoukankan      html  css  js  c++  java
  • Django filter中用contains 在mysql中的问题

    用PYTHON ,DJANGO 做站,在通常的情况下,需要用到 orM 的查询方法,比如object.filter(tag__contains='keywords')....

    在这种情况下,如果你跟踪 sql 语句,你会发现,SQL 语句会生成 select .... like bianry '%keywords%', 如果是这样的语句,在某些情况是下是会出问题的,也就是说查询出来的数据可能会比你预计的少。

    如果你用 raw sql 查总数 select count(*) from table where like '%keywords%' 得到数量可能比你用ORM 采用上面的方式得到的数据多,问题就在于生成的条件问题。

    后来查询了 django  说明,如果把ORM 语句变成:object.filter(tag__icontains='keywords').... 就好了。

    注意contains ,icontains 的区别. 后来从django官网查到了说明:

    operators = {
            'exact': '= %s',
            'iexact': 'LIKE %s',
            'contains': 'LIKE BINARY %s',
            'icontains': 'LIKE %s',
            'regex': 'REGEXP BINARY %s',
            'iregex': 'REGEXP %s',
            'gt': '> %s',
            'gte': '>= %s',
            'lt': '< %s',
            'lte': '<= %s',
            'startswith': 'LIKE BINARY %s',
            'endswith': 'LIKE BINARY %s',
            'istartswith': 'LIKE %s',
            'iendswith': 'LIKE %s',
        }
  • 相关阅读:
    Javascript基础知识4
    JavaScript基础知识3
    JavaScript基本知识2
    JavaScript基本知识1
    BFC?来自CSS中的BFC
    创建【哆啦A梦】风格字体
    理解JavaScript函数
    我所了解的BFC
    jQuery
    html
  • 原文地址:https://www.cnblogs.com/zhaojia-dream/p/3994133.html
Copyright © 2011-2022 走看看