• Django object filter查询[转]


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



    参考说明,就可以写自己的语句了。

  • 相关阅读:
    hdu2037 经典贪心入门
    hdu1045 dfs
    poj2243 bfs
    poj2488 dfs
    poj1111 DFS
    单词统计
    冲刺第五天
    七周总结学习笔记
    冲刺第四天
    冲刺第三天
  • 原文地址:https://www.cnblogs.com/songjinduo/p/5144021.html
Copyright © 2020-2023  润新知