码迷,mamicode.com
首页 > 数据库 > 详细

Django filter中用contains 在mysql中的问题

时间:2014-09-26 10:37:28      阅读:332      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   ar   数据   sp   div   art   问题   

用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,
    }

 

Django filter中用contains 在mysql中的问题

标签:style   blog   color   ar   数据   sp   div   art   问题   

原文地址:http://www.cnblogs.com/zhaojia-dream/p/3994133.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!