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

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

获取对象 通过模型Manager构造一个QuertSet,来从你数据库获取对象。 QuerySet表示你数据库取出来一个对象集合。...它可以含有零个、一个或者多个过滤器,过滤器根据所给参数限制查询结果范围。在sql角度,QuerySet和SELECT命令等价,过滤器是像WHERE和LIMIT一样限制子句。...限制查询集范围 可以用 python 数组切片语法来限制 QuerySet 以得到一部分结果。它等价于SQL LIMIT 和 OFFSET 。...字段筛选条件 字段筛选条件就是 SQL 语句中 WHERE 从句。就是 Django QuerySet filter(), exclude() 和 get() 方法关键字参数。...QuerySet 第一次运行时,会执行数据库查询,接下来 Django 就在 QuerySet 缓存中保存查询结果,并根据请求返回这些结果(比如,后面再次调用这个 QuerySet 时候)。

4.3K20

Django-官网查询部分翻译(1.11版本文档)-QuerySet-字段查找-06

Retrieving objects 查出对象(QuerySet) 从数据库查询对象,通过 表模型类 Manager 管理器 来构造一个 QuerySet 。...一个 QuerySet 代表着你数据库一系列对象集合,它可以是 0 个、 1 个 或者多个 filters,filters 可以基于你给出参数 缩小查询结果范围,对于 SQL ,一个 QuerySet...(字段查询条件,双下划线查询) 此部分参考文档: django官网 字段查找(field-lookups) 字段查找(field-lookups)对应SQL 语句中 WHERE 条件,一般放在...QuerySet 对象 filter() 、exclude()、get() 方法作为条件 常见形式 注意点 不同数据库对这些方法支持不同,django orm 对应不同数据库也能翻译成不同 SQL...|The) +'; # -- MySQL,对于这个字段查询django orm 对应不同 数据库 会解析成不同 SQL 语句 __iregex # 忽略大小写正则匹配 # 案例 Entry.objects.get

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

Django ORM模型:想说爱你不容易

Django数据模型建立过程很简单,就是继承django.db.modelsModel类,然后给它增加属性。每一个属性可以对应关系数据库一个字段。...有一些限制条件是Django提供,并没有数据库层面的对应物,比如blank。 (当blank参数为真时,对应字段可以为留为空白。) 在基本模型设计上,Django ORM没有留什么坑。...需要注意是,在Django ORM,只能通过ForeignKey来定义多对一关系,不能显示地定义一对多关系。但你可以使用模型对象*_set语法来反向调用多对一关系。...真希望有一种显式说明关系办法,降低读代码时认知负担。 查询 Django ORM可以通过一些方法来实现。其中很多方法返回Django自定义QuerySet迭代器。...因此,在写程序时,要注意QuerySet求值时间点,避免重复数据库操作。 SQLWHERE条件可以通过参数形式来传给方法。

77220

Django ORM模型:想说爱你不容易

Django数据模型建立过程很简单,就是继承django.db.modelsModel类,然后给它增加属性。每一个属性可以对应关系数据库一个字段。...有一些限制条件是Django提供,并没有数据库层面的对应物,比如blank。 (当blank参数为真时,对应字段可以为留为空白。) 在基本模型设计上,Django ORM没有留什么坑。...需要注意是,在Django ORM,只能通过ForeignKey来定义多对一关系,不能显示地定义一对多关系。但你可以使用模型对象*_set语法来反向调用多对一关系。...真希望有一种显式说明关系办法,降低读代码时认知负担。 查询 Django ORM可以通过一些方法来实现。其中很多方法返回Django自定义QuerySet迭代器。...因此,在写程序时,要注意QuerySet求值时间点,避免重复数据库操作。 SQLWHERE条件可以通过参数形式来传给方法。

62620

Django ORM模型:想说爱你不容易

Django数据模型建立过程很简单,就是继承django.db.modelsModel类,然后给它增加属性。每一个属性可以对应关系数据库一个字段。...有一些限制条件是Django提供,并没有数据库层面的对应物,比如blank。 (当blank参数为真时,对应字段可以为留为空白。) 在基本模型设计上,Django ORM没有留什么坑。...需要注意是,在Django ORM,只能通过ForeignKey来定义多对一关系,不能显示地定义一对多关系。但你可以使用模型对象*_set语法来反向调用多对一关系。...真希望有一种显式说明关系办法,降低读代码时认知负担。 查询 Django ORM可以通过一些方法来实现。其中很多方法返回Django自定义QuerySet迭代器。...因此,在写程序时,要注意QuerySet求值时间点,避免重复数据库操作。 SQLWHERE条件可以通过参数形式来传给方法。

1.3K80

DjangoManager和QuerySet

DjangoManager和QuerySet 要从数据库检索对象,需要通过模型类 Manager 构建一个 QuerySet。...那么是否可以查询数据呢?实际上由于“一个模型类实例代表数据库一行记录”,因此模型类实例是不能起到查询数据功能。 Manager 因此,我们要从数据库检索数据,ORM就必须提供相应方法。...可以根据给定参数缩小查询结果量。在 SQL 层面上, QuerySet 对应 SELECT 语句,而filters对应类似 WHERE 或 LIMIT 限制子句。...在Django文档,明确告诉了开发者,什么时候QuerySet被执行。因为这影响SQL执行效率。...字段查找 由于字段查询非常多,也非常常用,本文不进行说明。请直接参考Django字段查询 参考资料: 执行查询 QuerySet API参考 管理器

1.1K30

07.Django学习之model进阶

QuerySet 可切片 使用Python 切片语法来限制查询集记录数目 。它等同于SQL LIMIT 和OFFSET 子句。...首次对查询集进行求值 —— 同时发生数据库查询 ——Django 将保存查询结果查询集(非简单查询查询结果,简单查询往下看。)...也可以通过使用双下划线“__”连接字段名来实现指定递归查询。 没有指定字段不会缓存,没有指定深度不会缓存,如果要访问的话Django会再次进行SQL查询。...也可以通过depth参数指定递归深度,Django会自动缓存指定深度内所有的字段。如果要访问指定深度外字段Django会再次进行SQL查询。...也接受无参数调用Django会尽可能深递归查询所有的字段。但注意有Django递归限制和性能浪费。 Django >= 1.7,链式调用select_related相当于使用可变长参数。

2K30

DjangoQuerySet以及Pickle 序列化在Django深度运用详解

切片未执行QuerySet通常会返回另一个未执行Query Set。但是,如果使用切片语法step参数,Django将执行数据库查询并返回一个列表。...有关拾取QuerySet详细信息,请参阅下一节。在本节,从数据库读取结果非常重要。 repr()调用repr()时,将执行QuerySet。...这意味着当取消缓存QuerySet时,它包含缓存时结果,而不是数据库当前结果。 如果只想提取将来从数据库重新创建QuerySet所需信息,请提取QuerySet查询属性。...表达式可以是简单值、对模型(或任何相关模型)字段引用,或计算与QuerySet对象相关对象聚合表达式(平均值、总和等)。...annotation()每个参数都是一个注释,将添加到返回QuerySet每个对象。 Django提供聚合函数在以下聚合函数中进行了描述。

1.7K10

Django学习笔记之Queryset详解

另外,查询QuerySet又是缓存,当再次使用同一个QuerySet时,并不会再查询数据库,而是直接从缓存获取(不过,有一些特殊情况)。...QuerySet方法 数据库常用操作就四种:增、删、改、查,QuerySet方法涉及删、改、查。后面还会讲model对象方法,model方法主要是增、删、改、还有调用model实例字段。...只返回主表(即Author表)所有字段值,即使在查询时关联了其它表,关联表字段也不会返回,只有当我们通过Author instance用关联表时,Django才会再次查询数据库获取值。...代码2,当遍历开始前,先拿到EntryQuerySet,并且也拿到这个QuerySet每个objectblog对象,这样遍历过程,就不用再查询数据库了,这样就减少了数据库读次数。...select_related是用select ……join来返回关联字段,而prefetch_related是用多条SQL语句形式查询,一般,后一条语句用IN来调用上一句话返回结果。

2.7K30

Django-model进阶(中介模型,查询优化,extra,整体插入)

QuerySet 可切片 使用Python 切片语法来限制查询集记录数目 。它等同于SQL LIMIT 和OFFSET 子句。...在一个新创建查询集中,缓存为空。首次对查询集进行求值 —— 同时发生数据库查询 ——Django 将保存查询结果查询缓存并返回明确请求结果(例如,如果正在迭代查询集,则返回下一个结果)。...也可以通过使用双下划线“__”连接字段名来实现指定递归查询。 没有指定字段不会缓存,没有指定深度不会缓存,如果要访问的话Django会再次进行SQL查询。...也可以通过depth参数指定递归深度,Django会自动缓存指定深度内所有的字段。如果要访问指定深度外字段Django会再次进行SQL查询。...也接受无参数调用Django会尽可能深递归查询所有的字段。但注意有Django递归限制和性能浪费。 Django >= 1.7,链式调用select_related相当于使用可变长参数。

1.6K70

05.Django基础五之django模型层(一)单表操作

一 ORM简介 MVC或者MVC框架包括一个重要部分,就是ORM,它实现了数据模型与数据库解耦,即数据模型设计不需要依赖于特定数据库通过简单配置就可以轻松更换数据库,这极大减轻了开发人员工作量...CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制字段所允许最大字符数. IntegerField #用于保存一个整数....类型数据来调用,返回数据库匹配查询(QuerySet)对象数量。...2. select_related使用SQLJOIN语句进行优化,通过减少SQL查询次数来进行优化、提高性能。...查询价格在100200之间所有书籍名称及其价格 5 查询所有人民出版社出版书籍价格(从高低排序,去重)   关于django连接mysql时指定严格模式配置 DATABASES = {

2.9K10

python测试开发django-14.查询表结果(超详细)

前言 django查询数据库方法很多,不同方法返回结果也不太一样,本篇详细讲解关于查询13个方法 返回对象是对象列表: all(), filter(), exclude(), order_by...查询整张表sql : select * from hello_user django里面查询数据库不需要写sql语句 ret=表类名称.objects.all() 返回是整个表内容, 这里返回是可迭代对象...”123456” filter()查询结果是可迭代对象,如果结果只有一个,可以通过下标取值。...).values_list(“user_name”, “mail”) distinct() 从返回结果剔除重复纪录 由queryset对象调用,返回值是querysetsql里面的distinct...调用者:objects管理器 返回查询model对象 (注意:查询结果有且只有一个才执行) 如果查询结果有多个,会报错MultipleObjectsReturned, 如果查询结果有0个,会报错DoesNotExist

1.1K20

Django-models & QuerySet API

django配置mysql数据库 查询queryset时如果需要选取查询集中某个子集字段时, 应该用切片,或者first 选择某个子集对象,这样才能够使用到 子集字段,直接queryset后选择字段会直接报错...一是在INSTALLED_APPS里面加入app名称; 二是配置数据库相关信息 View Code 定义数据库表结构  models.py 使用orm框架,不需要编写原生sql语句 from django.db...blank    为True时,admin可以为空。但是不限制数据库,要想限制数据库里,需要设置null。 choices   选择框。...从数据库查询出来结果一般是一个QuerySet集合。...[, , ]> 从外部脚本调用Djangomodels表 import os, sys PROJECT_DIR = os.path.dirname

1.4K20

【Python全栈100天学习笔记】Day41 Django深入理解框架

在MySQL创建数据库SQL语句如下所示: create database oa default charset utf8; Django框架本身有自带数据模型,我们稍后会用到这些模型,为此我们先做一次迁移操作...字段属性primary_key用于设置主键,max_length用来设置字段最大长度,db_column用来设置数据库字段对应列,verbose_name则设置了Django后台管理系统字段显示名称...说明2:查询多个对象时候返回QuerySet对象,QuerySet使用了惰性查询,即在创建QuerySet对象过程不涉及任何数据库活动,等真正用到对象时(求值QuerySet)才向数据库发送SQL...在数据库不要出现无效数据。 不要对QuerySet调用len()函数。 将QuerySetexists()方法返回值用于if条件。...模型定义参考 字段字段名称限制 字段名不能是Python保留字,否则会导致语法错误 字段名不能有多个连续下划线,否则影响ORM查询操作 Django模型字段字段类 说明 AutoField

2.2K30

翻译了Django1.4数据库访问优化部分

>>> news.channel # 这时channel是缓存版本,不会造成数据库访问 方法调用每次都会触发数据库查询 >>> news = News.objects.get(id=1) >...').all() n = news_list[0] print n.title # 会产生额外查询语句 QuerySet.only() 只加载某字段,之后读取任何属性都会产生查询 使用 QuerySet.count...with使用是关键 每次QuerySet.count()调用都会产生查询 使用 QuerySet.update() 和 delete() 批量更新使用 QuerySet.update() 批量删除使用...QuerySet.delete() 批量操作不会调用定义 save() 或 delete() 方法 直接使用外键值 获取频道ID: news.channel_id 而不是: news.channel.id...批量插入 用 django.db.models.query.QuerySet.bulk_create() 批量创建对象,减少SQL查询 数量。

62110

Django学习-第十讲(上):QuerySet API 学习

QuerySet API 我们通常做查询操作时候,都是通过模型名字.objects方式进行操作。...QuerySet方法 在使用QuerySet进行查找操作时候,可以提供多种操作。比如过滤完后还要根据某个字段进行排序,那么这一系列操作我们可以通过一个非常流畅链式调用方式进行。...(title__contains='hello') 3.annotate:给QuerySet每个对象都添加一个使用查询表达式(聚合函数、F表达式、Q表达式、Func表达式等)字段 将在每个对象中都添加一个...,那么就会查找出来,如果没有,则会创建并且存储数据库。...调用len函数:调用len函数用来获取QuerySet总共有多少条数据也会执行SQL语句。

57520

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

数据库而不是Python数据库工作 比如: 在最基础层面上,使用过滤器和反向过滤器对数据库进行过滤。 使用F 表达式在相同模型基于其他字段进行过滤。 使用数据库注解和聚合。...如果上面那些都不够用,你可以自己生成SQL语句: 使用QuerySet.extra() extra()是一个移植性更差,但是功能更强方法,它允许一些SQL语句显式添加到查询。...另外,当建立起一个带有延迟字段模型时,要意识一些(小、额外)消耗会在Django内部产生。...使用QuerySet.update()和delete() 通过QuerySet.update()使用批量SQL UPDATE语句,而不是获取大量对象,设置一些值再单独保存。...如果一个模型具有默认顺序(Meta.ordering),并且你并不需要它,通过查询集上无参调用order_by() 来移除它。 向你数据库添加索引可能有助于提升排序性能。

1.1K30

Django学习笔记:QuerySet API

QuerySet API: 我们通常做查询操作时候,都是通过模型名字.objects方式进行操作。...返回新QuerySet方法: 在使用QuerySet进行查找操作时候,可以提供多种操作。比如过滤完后还要根据某个字段进行排序,那么这一系列操作我们可以通过一个非常流畅链式调用方式进行。...annotate:给QuerySet每个对象都添加一个使用查询表达式(聚合函数、F表达式、Q表达式、Func表达式等)字段。...示例代码如下: obj,created= Category.objects.get_or_create(title='默认分类') 如果有标题等于默认分类分类,那么就会查找出来,如果没有,则会创建并且存储数据库...调用len函数:调用len函数用来获取QuerySet总共有多少条数据也会执行SQL语句。

60220
领券