`
m4774411wang
  • 浏览: 111846 次
  • 性别: Icon_minigender_1
  • 来自: 南昌
社区版块
存档分类
最新评论

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()来查看记录集的长度。

比如上面的写法我们可以用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的一篇文章:
django model的get和filter方法的区别

原创文章请注明转载自老王python,本文地址:http://www.cnpythoner.com/post/113.html

作者:老王@python python 教程
老王python,提供pythn相关的django 教程和python 下载,希望大家能够喜欢!

分享到:
评论

相关推荐

    详解Django的model查询操作与查询性能优化

    本文将详细介绍Django的Model查询操作,并分享优化查询性能的方法。 首先,为了更好地掌握Django Model的查询操作,需要了解如何查看SQL执行情况。在Django的shell中,可以通过导入django.db.connection来查看查询...

    Django model select的多种用法详解

    在Django中,Model是数据库交互的...理解并熟练掌握这些Django Model的查询方法,能够极大地提高开发效率,同时保证代码的可读性和维护性。在实际项目中,应根据具体需求灵活运用这些工具,实现高效、精准的数据查询。

    浅谈django model的get和filter方法的区别(必看篇)

    ### Django Model 中 get 和 filter 方法的区别详解 在Django框架中,ORM(对象关系映射)操作是非常重要的组成部分,能够极大地提高开发效率和代码可维护性。本文将深入探讨Django Model中的`get`和`filter`两种...

    Python-轻松整合Django模型的常见行为

    Django并没有内置这个功能,但可以通过自定义模型方法或者使用第三方库如`django-model-utils`中的`TimeStampedModel`来实现。 ```python from model_utils.models import TimeStampedModel class MyModel...

    Django框架 Django 2.1.7

    Django是一个基于Python的开源Web应用框架,遵循模型-模板-视图(Model-Template-View,MTV)的设计模式,旨在简化Web开发过程。Django 2.1.7是这个框架的一个稳定版本,它提供了丰富的功能和性能优化,适用于构建...

    PyPI 官网下载 | django_model_values-0.5.1-py2.py3-none-any.whl

    总的来说,`django_model_values`是一个针对Django框架的实用工具,它为Python开发者提供了一种更便捷的方式去管理和操作Django模型的数据,适用于那些需要优化数据库查询和模型值处理的Python后端项目。安装和使用...

    Python库 | django-timestampable-model-0.1.3.tar.gz

    此外,`django-timestampable-model`的版本0.1.3可能包含了一些优化和修复,这通常是开发者在选择库时需要考虑的因素。升级到最新版本通常意味着更好的稳定性和性能,同时也会获得最新的特性支持。 总的来说,`...

    轻量级django

    轻量级Django的概念指的是在保持Django核心优势的同时,通过优化和精简,使其更加适合小型或中型项目,降低系统资源的占用,提高运行效率。 一、Django框架基础 1. **MVT架构**:Django遵循Model-View-Template...

    Django model 中设置联合约束和联合索引的方法

    在Django框架中,模型(Model)是用来定义数据库表结构的类。为了优化数据库性能和保证数据完整性,我们可以为模型的字段设置联合约束和联合索引。本文将详细讲解如何在Django Model中实现这两个功能。 1. **联合...

    Python库 | django-orion-model-0.9.9.tar.gz

    总的来说,`django-orion-model`作为Python和Django生态系统的一个组件,旨在简化和加强数据模型管理,提升开发效率,是Python后端开发者的有力工具。如果你正在使用Django进行项目开发,了解并善用这类库,可以大大...

    PyPI 官网下载 | django-orion-model-0.58.tar.gz

    `django-orion-model`可能是为了简化数据操作、增加业务逻辑或者优化性能而设计的。 在下载的`django-orion-model-0.58.tar.gz`文件中,`0.58`代表这是该库的一个特定版本,每个版本可能包含修复的错误、新增的功能...

    django 1.8.2官方中文文档

    Django 1.8.2 对缓存系统进行了优化,提升了缓存操作的效率。 九、国际化和本地化 Django 支持多语言,提供国际化和本地化功能。开发者可以轻松地为应用添加不同语言的支持。在 Django 1.8.2 中,这部分功能更加...

    python web Django

    Django框架2.0的文档中首先介绍了Django的各个组成部分,包括模型层(Model Layer)、视图层(View Layer)、模板层(Template Layer)、表单处理(Forms)、管理后台(The admin)等。这些部分构成了Django的核心,...

    Django_2_中文版

    通过这份中文版的Django 2教程,无论是初学者还是有一定经验的开发者,都能找到详尽的指导,逐步提升在Django开发中的技能和效率。阅读过程中,结合实际的项目实践,将更有利于理解和掌握这些知识点。

    基于Django的教务信息管理系统源码

    Django,一个高性能、简洁优雅的Python Web框架,以其MVT(Model-View-Template)设计模式著称,为开发者提供了强大的数据库操作、表单处理和URL调度等工具。在构建教务信息管理系统时,Django的核心优势在于其高效...

    精通 Django中文版

    首先,Django 的核心概念包括模型(Models)、视图(Views)、模板(Templates)和URL 映射(URLconfs),这通常被称为 MVC(Model-View-Controller)架构的变体——MTV(Model-Template-View)。模型负责数据模型的...

    Django开发资源包

    Django是一种基于Python的开源Web框架,用于快速开发安全、可维护的网站。这个"Django开发资源包"可能包含了各种与Django相关的学习材料、代码...通过深入研究并实践这些内容,你可以提升在Django开发中的技能和效率。

    Django学校管理系统

    Django采用MTV(Model-Template-View)设计模式,强调快速开发和DRY(Don't Repeat Yourself)原则。Model负责数据模型,Template处理视图展示,View则处理用户请求并调用相应的模板和模型。 **2. 数据库模型...

    python后端开发学习笔记,知识体系,技术栈 python Django mysql性能优化 redis 面向对象.zip

    这份学习笔记聚焦于Python后端开发的知识体系和技术栈,涵盖了Python基础、Django框架、MySQL数据库性能优化、Redis缓存以及面向对象编程等核心内容。 首先,Python是一种高级编程语言,以其简洁清晰的语法和丰富的...

    Django 1.4.2

    Django 1.4.2 是一个基于 Python 的著名开源 Web 开发框架,它遵循 Model-View-Controller(MVC)架构模式,但将其命名为 Model-Template-View(MTV)。这个版本发布于2012年,为开发者提供了构建高效、可扩展且功能...

Global site tag (gtag.js) - Google Analytics