`
san_yun
  • 浏览: 2639639 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

提高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的一篇文章:

分享到:
评论

相关推荐

    Python Django Model模型

    为了提高效率,Django允许对`QuerySet`进行缓存,从而减少数据库访问次数。当使用`iterator()`或`list()`方法时,`QuerySet`只会执行一次数据库查询,并缓存结果。 ```python articles = Article.objects.all()....

    Django基础.pdf

    学习Django,需要关注以下几个方面的内容: 1. 认识Django框架及其与Python版本的关系:Django是一个Python语言编写的框架,因此学习者需要熟悉Python的基础知识,同时要了解不同版本的Django对Python版本的依赖性...

    Pycharm 操作Django Model的简单运用方法

    总结,通过PyCharm操作Django Model涉及以下几个关键步骤:定义Model,生成和应用迁移,使用SQLite工具查看数据库,创建视图处理数据,编写模板展示数据,最后启动服务器并查看结果。这个过程使得开发者能够高效地...

    PyPI 官网下载 | django_pb_model-0.1.4-py3-none-any.whl

    标签"django, python, 后端, 开发语言, Python库"揭示了`django_pb_model`与几个关键领域有关。首先,`django`表明这个库是与Django框架相关的,Django是用Python编写的一个广泛使用的开源Web应用框架,遵循模型-...

    DjangoWeb.zip

    Django项目的典型结构包括以下几个部分: 1. manage.py:项目管理脚本,用于启动服务器、迁移数据库、创建应用等。 2. settings.py:项目配置文件,包含数据库设置、中间件、应用列表、静态文件和媒体文件路径等。 3...

    django book 2.0

    学习Django的路线大致可以分为以下几个阶段: - 入门:了解Django框架的基本概念,安装Django环境,熟悉Django的目录结构和基本运行原理。 - 基础知识:深入理解Django的核心组件,包括模型(Model)、视图(View)...

    利用Django学习并开发的小说网源码.zip

    Django项目通常由以下几个主要部分组成:`manage.py`、`settings.py`、`urls.py`和`wsgi.py`。`manage.py`是项目的命令行接口,可以用于创建应用、迁移数据库等操作;`settings.py`存储项目配置信息;`urls.py`处理...

    Django1.5.4

    在 Django 1.5.4 版本中,有几个重要的特性值得一提: 1. **模型(Model)**:Django 的模型是数据库层的抽象,允许开发者用 Python 代码定义数据结构。通过定义模型类,你可以轻松地创建数据库表、执行查询以及...

    DJANGO课件_轮播图

    在这里,我们可能涉及到以下几个关键知识点: 1. **Django模板系统**:Django提供了强大的模板语言,用于将静态HTML与动态数据结合。在创建轮播图时,我们需要定义一个模板,将图片、链接和其他信息插入到HTML结构...

    django框架重点学习文档下载

    Django的目标是提高开发效率,并且坚持DRY(Don't Repeat Yourself)的原则。 **1.2 Django的主要特点** - **快速开发**:Django提供了许多内置的功能,使得开发者能够快速地构建复杂的Web应用程序。 - **DRY原则**...

    django学生后台管理系统

    在【压缩包子文件的文件名称列表】中,我们看到有以下几个部分: 1. **venv**:这是Python的虚拟环境目录,开发者通常会为每个项目创建一个独立的虚拟环境,以隔离项目的依赖包,避免版本冲突。在这里,venv包含了...

    Pro django

    在Django中,有几个关键的知识点是本书可能会详细讲解的: 1. **MVC架构**:Django遵循Model-View-Controller(模型-视图-控制器)设计模式。书中可能会解释每个组件的作用以及它们如何协同工作,帮助开发者构建...

    Django 查询数据库并返回页面的例子

    首先,我们要了解Django框架中几个关键概念。在Django项目中,模型(Model)代表了数据库中的数据结构,视图(View)负责处理用户的请求并返回相应的响应,而模板(Template)则用于定义输出的HTML结构。 在本例中...

    Python库 | django_dramatiq_pg-1.0.tar.gz

    在实际开发中,使用django_dramatiq_pg可能会涉及以下几个知识点: 1. **Django框架**:了解Django的基本概念,包括MVC(Model-View-Controller)架构、URL路由、模板系统、表单处理、认证和授权等。 2. **...

    Python一日一练---Django模版练习源码

    在这个练习中,你将学习到以下几个关键知识点: 1. **Django模板语言(DTL)**:DTL是Django提供的强大而灵活的模板系统,允许开发者使用Python语法结构来控制HTML的生成。通过模板标签、过滤器和变量,你可以构建...

    基于python+Django的漏洞扫描系统源码数据库.zip

    一个基于Python和Django的漏洞扫描系统通常由以下几个主要部分组成: - 数据库:存储扫描结果、目标信息和配置数据。 - 扫描引擎:执行网络扫描,识别潜在漏洞。 - 分析模块:分析扫描结果,确定漏洞类型和严重...

    基于Django高速收费系统.zip

    在这个高速收费系统中,Django的主要作用可能包括以下几个方面: 1. **用户认证与授权**:Django内置了强大的用户认证系统,可以用于管理员和其他工作人员的身份验证和权限控制,确保只有授权人员才能访问和操作...

    PyPI 官网下载 | django-pipeline-compass-0.1.4.tar.gz

    Django,作为Python最流行的Web框架之一,以其MVC(Model-View-Controller)设计模式和强大的功能著称。然而,在处理静态资源如CSS和JavaScript时,原始的Django并未提供特别高效的解决方案。这正是`django-pipeline...

    Python库 | django_pydantic_settings-0.3.0-py3-none-any.whl

    这个库将Pydantic的易用性和强类型验证功能引入到Django的settings模块,从而提高了代码的可读性、可维护性和安全性。 ### Pydantic简介 Pydantic是Paul Ross开发的一个Python库,用于从JSON或其他数据源解析和...

    Django REST进阶学习资料

    Django REST Framework(简称DRF)是基于Python的Django Web框架的一个强大的扩展,它为构建Web API提供了高效、易用的工具集。本进阶学习资料将带你深入理解Django REST的高级特性,帮助你从初级用户晋升为熟练...

Global site tag (gtag.js) - Google Analytics