有效使用Django的QuerySets】的更多相关文章

对象关系映射 (ORM) 使得与SQL数据库交互更为简单,不过也被认为效率不高,比原始的SQL要慢. 要有效的使用ORM,意味着需要多少要明白它是如何查询数据库的.本文我将重点介绍如何有效使用 Django ORM系统访问中到大型的数据集. Django的queryset是惰性的 Django的queryset对应于数据库的若干记录(row),通过可选的查询来过滤.例如,下面的代码会得到数据库中名字为‘Dave’的所有的人: 1 person_set = Person.objects.filte…
from __future__ import unicode_literals from django.db import models from django.contrib.auth.models import User # Create your models here. class Host(models.Model): hostname=models.CharField(max_length=) ip=models.GenericIPAddressField(unique=True)…
Django的QuerySets酷毙了! 在本文中我将解释一下QuerySets是什么,它是如何工作的(如果你对它已经熟悉了,你可以直接跳到第二部分),我认为如果可以的话你应该总是返回QuerySets对象,下面让我来谈谈如何做. QuerySets很酷 QuerySet,本质上是一个给定的模型的对象列表.我说“列表”而不是“组”或更正式的“集合”因为它是有序的.事实上,你可能已经熟悉如何获得QuerySets,因为这就是你调用variousBook.objects.XXX()方法后得到的对象.…
1. 内存.内存,还是加内存 2. 使用单独的静态文件服务器 3. 关闭KeepAlive(如果服务器不提供静态文件服务,如:大文件下载) 4. 使用memcached 5. 使用select_related()加载关联表数据 6. 使用values()过滤不必要的字段查询 7. 使用模板cache 8. 加载编译的模板 9.让Django支持数据库长连接 可以提高不少性能 from django.template import loader from django.http import Ht…
Django数据层提供各种途径优化数据的访问,一个项目大量优化工作一般是放在后期来做,早期的优化是“万恶之源”,这是前人总结的经验,不无道理.如果事先理解Django的优化技巧,开发过程中稍稍留意,后期会省不少的工作量. 一 利用标准数据库优化技术: 传统数据库优化技术博大精深,不同的数据库有不同的优化技巧,但重心还是有规则的.在这里算是题外话,挑两点通用的说说: 索 引,给关键的字段添加索引,性能能更上一层楼,如给表的关联字段,搜索频率高的字段加上索引等.Django建立实体的时候,支持给字段…
Django的性能优化   一,利用标准数据库优化技术 传统数据库优化技术博大精深,不同的数据库有不同的优化技巧,但重心还是有规则的.在这里算是题外话,挑两点通用的说说: 索引,给关键的字段添加索引,性能能更上一层楼,如给表的关联字段,搜索频率高的字段加上索引等.Django建立实体的时候,支持给字段添加索引,具体参考Django.db.models.Field.db_index.按照经验,Django建立实体之前应该早想好表的结构,尽量想到后面的扩展性,避免后面的表的结构变得面目全非. 使用适…
Security in Django https://docs.djangoproject.com/en/1.10/topics/security/ 1 Cross site scripting (XSS) protection¶ 跨站脚本攻击 XSS attacks allow a user to inject client side scripts into the browsers of other users. This is usually achieved by storing th…
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453131687 以下的方法不会返回QuerySets,但是作用非常强大,尤其是粗体显示的方法,需要背下来. 方法名 解释 get() 获取单个对象 create() 创建对象,无需save() get_or_create() 查询对象,如果没有找到就新建对象 update_or_create() 更新…
以下的方法不会返回QuerySets,但是作用非常强大,尤其是粗体显示的方法,需要背下来. 方法名 解释 get() 获取单个对象 create() 创建对象,无需save() get_or_create() 查询对象,如果没有找到就新建对象 update_or_create() 更新对象,如果没有找到就创建对象 bulk_create() 批量创建对象 count() 统计对象的个数 in_bulk() 根据主键值的列表,批量返回对象 iterator() 获取包含对象的迭代器 latest(…
https://docs.djangoproject.com/en/2.2/topics/pagination/ Paginator objects¶ The Paginator class has this constructor: class Paginator(object_list, per_page, orphans=0, allow_empty_first_page=True)[source]¶ Required arguments¶ object_list A list, tupl…
Django的数据库API查询经常包含关键字参数.例如: bob_stories = Story.objects.filter(title_contains='bob', subtitle_contains='bob', text_contains='bob',byline='bob') 下面展示如何按字典形式传递这些关键字参数: bobargs = {'title_contains': 'bob', 'subtitle_contains': 'bob', 'text_contains': 'b…
http://127.0.0.1:8000/boards/1/ #boards/models.py from django.utils.text import Truncator class Topic(models.Model): # ... def __str__(self): return self.subject class Post(models.Model): # ... def __str__(self): truncated_message = Truncator(self.me…
concern_set = models.Concern.objects.filter(user_id=1).values("concern_id") querysets = models.Task.objects.none() # 创建一个空的对象 for concern_id in concern_set: # print(concern_id['concern_id']) qurey = models.Task.objects.filter(task_status=True,sh…
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中图片比较模糊,毕竟都是从PDF中截图出来的,有点丢像素,大致能看就行- -,另外还是渣翻,但个人觉的比前两章翻译的稍微进步了那么一点点- -,希望后面几章翻译的越来越溜,就这样) 第三章 扩展你的blog应用 在上一章中我们学习了表单的基础和在你的项目集成第三方的应用.这一章将会覆盖以下内容: 创建…
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:翻译完第一章后,发现翻译第二章的速度上升了不少,难道这就是传说中的经验值提升了?) 第二章 使用高级特性来优化你的博客 在上一章中,你创建了一个基础的博客应用.现在你将要改造它成为一个功能更加齐全的博客,利用一些高级的特性例如通过email来分享帖子,添加评论,给帖子打上tag,检索出相似的帖子.在本章中,你将会学习以下几点: 使用…
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作,岗位是测试研发,非常喜欢python,目前已经使用Django为公司内部搭建了几个自动化平台,因为没人教没人带,基本靠野路子自学,走过好多弯路,磕磕碰碰一路过来,前段时间偶尔看到<Django By Example>这本书,瞬间泪流满面,当初怎么没有找到这么好的Django教程.在看书的过程中不知…
3.2.2 查询操作 6.15章节包含所有模型相关的API解释. 后面的内容基于如下的一个博客应用模型: from django.db import models class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __str__(self): # __unicode__ on Python 2 return self.name class Autho…
Django文档: https://docs.djangoproject.com/en/1.10/ref/ 一.简单创建app 1.1 命令行创建project和app. django-admin startproject HelloWorld cd HelloWorld python manage.py startapp app01 1.2 pycharm创建app 2.将app01加入settings并配置url. 3.启动app python manage.py runserver 800…
""" The main QuerySet implementation. This provides the public API for the ORM. """ import copy import sys import warnings from collections import OrderedDict, deque from django.conf import settings from django.core import ex…
django orm总结[转载] 转载地址: http://www.cnblogs.com/linjiqin/archive/2014/07/01/3817954.html 目录1.1.1 生成查询1.1.2 创建对象1.1.3 保存修改的对象1.1.4 保存 ForeignKey 和 ManyToManyField 字段1.1.5 检索对象1.1.6 检索所有的对象1.1.7 过滤检索特定对象1.1.8 链接过滤1.1.9 过滤结果集是唯一 1.2.1 结果集是延迟的 1.2.2 其他的Que…
Django的form表单一般具有两种功能 1. 验证输入 2.输入HTML ---------模板----------- from django import forms class BookForm(forms.Form): name = forms.CharField(max_length=10) publish_date = forms.DateField() -------视图----------- def forms(request): Forms = form_models.Boo…
python  Django教程  之 模型(数据库).自定义Field.数据表更改.QuerySet API 一.Django 模型(数据库) Django 模型是与数据库相关的,与数据库相关的代码一般写在 models.py 中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在settings.py中配置即可,不用更改models.py中的代码,丰富的API极大的方便了使用. 本节的代码:(Django 1.6, Python 2.7 测试环境) 大…
django获取指定列的数据 model一般都是有多个属性的,但是很多时候我们又只需要查询特定的某一个,这个时候可以用到values和values_list [values()](https://docs.djangoproject.com/en/1.9/ref/models/querysets/#values) values()¶ values(*fields)¶ Returns a QuerySet that returns dictionaries, rather than model i…
详细的见 https://github.com/linux-wang/DRF_tutorial/blob/master/README.md DRF中有一个serializer的概念,实现的功能是将各种Django Queryset和model instance转换成Python原生格式,这里就省去了你自己写API的时候面临的类型问题,当然也可以逆向操作.官方文档如下: Serializers allow complex data such as querysets and model insta…
Django对数据库的操作分用到三个类:Manager.QuerySet.Model. Manager的主要功能定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己的manager,增加表级方法: QuerySet是Manager的方法返回的,是一个可遍历结构,包含一个或多个元素,每个元素都是一个Model 实例,它里面的方法也是表级方法. Model是一条记录的类,它的功能很强大,里面包含外键实体等,它的方法都是记录级方法(都是实例方法,…
目录1.1.1 生成查询1.1.2 创建对象1.1.3 保存修改的对象1.1.4 保存 ForeignKey 和 ManyToManyField 字段1.1.5 检索对象1.1.6 检索所有的对象1.1.7 过滤检索特定对象1.1.8 链接过滤1.1.9 过滤结果集是唯一 1.2.1 结果集是延迟的 1.2.2 其他的QuerySet方法1.2.3 限制 QuerySets1.2.4 字段查找1.2.5 跨关系查询1.2.6 过滤器可参考模型字段1.2.7 缓存查询集1.2.8 比较对象1.2.…
转自:http://blog.sina.com.cn/s/blog_a73687bc0101cygy.html (一) 初始化测试运行环境 import os; import sys; sys.path.append("G:/pydev/mysite2")   # 需要修改 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")   # 需要修改 from qi.mo…
1,下载安装MySQLdb类库 http://www.djangoproject.com/r/python-mysql/ 2,修改settings.py 配置数据属性 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 'NAME': 'djangodb', # Or path to databas…
在查询时发生了什么(When QuerySets are evaluated) QuerySet 可以被构造,过滤,切片,做为参数传递,这些行为都不会对数据库进行操作.只要你查询的时候才真正的操作数据库. 下面的 QuerySet 行为会导致执行查询的操作: 循环(Iteration):QuerySet 是可迭代的,在你遍历对象时就会执行数据库操作.例如,打印出所有博文的大标题: for e in Entry.objects.all(): print(e.headline) 切片(Slicing…
1.一个模型类代表数据库中的一个表,一个模型类的实例代表这个数据库表中的一条特定的记录. 2.管理器和查询集. 查询集QuerySet表示从数据库中取出来的对象的集合.它可以含有零个.一个或者多个过滤器.过滤器基于所给的参数限制查询的结果.查询集有可迭代和可切片的特点. 每个模型都至少有一个管理器,它默认命名为objects.管理器只可以通过模型的类访问,而不可以通过模型的实例访问,目的是为了强制区分"表级别"的操作和"记录级别"的操作. >>>B…