zoukankan      html  css  js  c++  java
  • 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',
        }



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

  • 相关阅读:
    DHCP Option 60 的理解
    程序中的魔鬼数字
    开源GUI-Microwindows之程序入口分析
    http报错之return error code:401 unauthorized
    内存泄漏以及常见的解决方法
    怎样对ListView的项进行排序
    getline函数
    JavaFx初探
    ListBox控件的操作与实现
    SQLite的SQL语法
  • 原文地址:https://www.cnblogs.com/songjinduo/p/5144021.html
Copyright © 2011-2022 走看看