zoukankan      html  css  js  c++  java
  • 提高django model效率的几个小方法

    django的model效率不是很高,特别是在做大量的数据库操作的时候,如果你只用django来开企业站或者外包项目的话,那可以小跳过下,而你恰巧是效率狂或者说是对程序的效率要求比较高的话,那就要注意下面的几个方法。
    1. count()方法:
    我们想用count方法来获取记录的条数可以采用下面的方法:
    num = info.objects.filter('...').count()
    我们来看下django model模块里面count方法是怎么写的?
    def count(self):
    """
    Performs a SELECT COUNT() and returns the number of records as an
    integer.
    If the QuerySet is already fully cached this simply returns the length
    of the cached results set to avoid multiple SELECT COUNT(*) calls.
    """
    if self._result_cache is not None and not self._iter:
    return len(self._result_cache)
    return self.query.get_count(using=self.db)

    从上面的看来,djang model的count()要执行SELECT COUNT()语句,其实是查询了下数据库,这样如果记录比较多的情况下,
    查询数据库的效率还是比较高的.
    比如我们可以用len()方法来求长度的话,使用的迭代,效果更低。
    info = info.objects.filter('...')
    num = len(info)
    2多用切片
    比如我们要查询数据的话,如果你的数据量比较大的情况下,你没有限定要查询的范围,对系统的开销会非常的大,比如你要分页的显示
    新闻数据,那你就要按照一页要显示多少数据,就读取多少数据,而不是一次起把数据全部给读出来,然后再根据限定的条件来显示的数据。
    比如你要显示前10条的新闻的话按照下面的方法来做:
    news = News.objects.all()[1:10]
    而不是:
    news = News.objects.all()
    news = news[1:10]
    因为
    news = News.objects.all()
    news = news[1:10]
    你是把数据库里的数据全部给读出来,这样效率不是很高。
    上面说的这几点是提高django model效率的几个小方法,希望大家平时在用django开发项目的时候要注意一些效率方面的东西。

  • 相关阅读:
    [写代码]处理一组lrc歌词文件
    [ubuntu]windows重装以后,恢复grub引导
    [HDOJ1878]欧拉回路
    [写代码]解析自定义数据库文件的思路
    [写代码]wordList——百词斩CLI版
    [HDOJ2544]最短路
    [HDOJ1285] 确定比赛名次
    [HDOJ1232]畅通工程
    [HDOJ2717]Catch That Cow
    jQuery实现点击开关图片切换
  • 原文地址:https://www.cnblogs.com/pyxiaomangshe/p/7975762.html
Copyright © 2011-2022 走看看