首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django 1.8 官方文档翻译: 2-2-1 执行查询

过滤后的结果是独立的 每次你筛选一个结果,得到的都是全新的另一个结果,它和之前的结果之间没有任何绑定关系。每次筛选都会创建一个独立的结果,可以被存储及反复使用。...查询是延迟的 QuerySets 是惰性的 – 创建 QuerySet 的动作不涉及任何数据库操作。...对 QuerySet 求值就意味着 Django 会访问数据库。想了解对查询何时求值,请查看 何时对查询求值 (When QuerySets are evaluated)....如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的比较。F() 的实例可以查询中引用字段,来比较同一个 model 实例中两个不同字段的值。...用 Q 对象实现复杂查找 (Complex lookups with Q objects) filter() 等函式中关键字参数彼此之间都是 “AND” 关系。

4.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

django 1.8 官方文档翻译: 2-6-4 数据库访问优化

弄清楚你执行什么查询以及你的开销花在哪里。你也可能想使用外部的项目,像django-debug-toolbar,或者直接监控数据库的工具。...理解查询 理解查询(QuerySets) 是通过简单的代码获取较好性能至关重要的一步。特别是: 理解查询计算 要避免性能问题,理解以下几点非常重要: QuerySets是延迟的。...用唯一的被或索引的列来检索独立对象 有两个原因在get()中,用带有unique或者db_index的列检索独立对象。首先,由于查询经过了数据库的索引,所以会更快。...一次性检索你需要的任何东西 不同的位置多次访问数据库,一次获取一个数据,通常来说不如在一次查询中获取它们更高效。如果你一个循环中执行查询,这尤其重要。...如果一个模型具有默认的顺序(Meta.ordering),并且你并不需要它,通过查询上无参调用order_by() 来移除它。 向你的数据库添加索引可能有助于提升排序性能。

1.1K30

Django ORM那些相关操作

方法 create() 创建一个新的对象,保存对象,并将它添加到关联对象之中,返回新创建的对象。...换句话说,关联的任何一端,都不需要再调用save()方法。 聚合查询和分组查询 聚合 aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典。...如果我们要对两个字段的值做比较,那该怎么做呢?   Django 提供 F() 来做这样的比较。F() 的实例可以查询中引用字段,来比较同一个 model 实例中两个不同字段的值。...')) Django 支持 F() 对象之间以及 F() 对象和常数之间的加减乘除和取模的操作。...终端打印SQL语句 Django项目的settings.py文件中,最后复制粘贴如下代码: LOGGING = { 'version': 1, 'disable_existing_loggers

2.3K60

Django 2.1.7 查询 QuerySet

上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...参考文献 https://docs.djangoproject.com/zh-hans/2.1/topics/db/queries/#caching-and-querysets 返回查询的过滤器如下:...新建的查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询的结果存在查询的缓存中,并返回请求的结果,接下来对查询求值将重用缓存中的结果。...mysql日志如下: 示例二:如下是两个查询,无法重用缓存,每次查询都会与数据库进行一次交互,增加了数据库的负载。...” 对查询进行切片后返回一个新的查询,不会立即执行查询

74720

Django 2.1.7 查询 QuerySet

上一篇Django 2.1.7 模型 - 条件查询 F对象 Q对象 聚合查询讲述了关于Django模型的介绍F对象、Q对象、聚合查询等功能。...参考文献 https://docs.djangoproject.com/zh-hans/2.1/topics/db/queries/#caching-and-querysets 返回查询的过滤器如下:...新建的查询集中,缓存为空,首次对查询求值时,会发生数据库查询django会将查询的结果存在查询的缓存中,并返回请求的结果,接下来对查询求值将重用缓存中的结果。...mysql日志如下: 示例二: 如下是两个查询,无法重用缓存,每次查询都会与数据库进行一次交互,增加了数据库的负载。...对查询进行切片后返回一个新的查询,不会立即执行查询

1.1K10

Django操作数据库

本篇主要介绍我们使用django框架开发的时候使用的操作数据库的语句,这在动态网站部分是很重要的,因为我们需要连接数据库进行操作,然后把数据处理的结果显示在前端页面上,在其他地方我们都是直接用sql语句来手动输入...,这样容易造成错误,还影响效率,django中,内置了很多处理数据库操作的函数,能更便利的帮我们操作数据库 开始 实例代码 models.py class Blog(models.Model):...q时才会访问数据库 查找前5个entry表里的数据 Entry.objects.all()[:5] 查找从第5个到第10个之间的数据 Entry.objects.all()[5:10] 查询从第0个开始到第...b.entry_set is a Manager that returns QuerySets....b.entries is a Manager that returns QuerySets.

37420

Django ORM:天使与魔鬼

有时候希望它坚持自我 很多时候我们需要限制 QuerySet 返回的字段以加快 DB 查询的速度(比如一些没索引的长字段),这时候可能的两个方法: only() & values() 。..._iterable_class ,如果后面还有更多的级联查询,会导致最后的结果为 Dict 而不是 QuerySet。...from django.db import connection # 语句提交之后,立即打印 # 同时需要记得开启 DEBUG = True print(connection.queries) 再或者...https://docs.djangoproject.com/en/1.11/ref/models/querysets/#extra extra() 可以利用 sql 在数据库中做数据处理,而不用放到内存中...,在数据量较大时有比较好的效果,比如: queryset = queryset.extra(select={'username': "CONCAT(username, '@', domain)"}) 模糊查询

79740

django分页Paginator的简单使用

之前同事项目中写了分页的一个函数,但是并没有返回结果的总个数和总页数。所以我就想到了用 django 自带的分页类获取分页的数据。因为要分页的对象可能是个列表而不是 django 模型的查询。...from django.core.paginator import Paginator page_rows= "每页展示多少条数据" # 注queryset是一个模型的查询 p= Paginator(...queryset, page_rows) # 获取查询的总个数 total_count= p.count # 获取查询的总页数 total_page= p.num_pages Paginator类源码...在这种情况下幂等是交由 order_by 的数据来保证的,常见数据库中,保持一个序列顺序固定,是需要显示的 order by 来做,虽然我们查询的时候,默认会根据自增 ID 来做一次 order...by,但是这是一个不可靠行为,或者说是叫做 undefined behavior ,Django 为了保证不同数据库,不同版本的数据库中数据一致,加上了这样一个强制。

1.1K30
领券