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开发项目的时候要注意一些效率方面的东西。
提高django model效率的几个小方法
2018年12月17日 23:12
python框架
文章评论(0)
-
kkkkkk 2018年12月21日 11:31牛逼kkkkk2018年12月21日 11:16炫丽清新,颇有韵味。流利贴切,描写佳妙。叙事抒情,均颇贴切。淋漓尽致,颇切题意。
-
kkkkkk 2018年12月21日 11:31一看就是复制粘贴的啦!kkkkklxinde2018年12月21日 11:17措辞婉约,面面俱到。尽情发抒,言词无碍明畅开朗,气势壮丽。轻松有趣,颇具题意。
-
kkkkklxinde 2018年12月21日 11:17措辞婉约,面面俱到。尽情发抒,言词无碍明畅开朗,气势壮丽。轻松有趣,颇具题意。回复
-
kkkkk 2018年12月21日 11:16炫丽清新,颇有韵味。流利贴切,描写佳妙。叙事抒情,均颇贴切。淋漓尽致,颇切题意。回复