首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

此时并未执行数据库查询 print news_list # 用时方执行查询操作 何时它们被执行. # 用时方执行查询操作 print news_list 数据如何被缓存 # 这样QuerySet...使用 QuerySet.values() 和 values_list() 当只需要一个字段返回list或者dict时,使用 values news_list = News.objects.values...QuerySet.delete() 批量操作不会调用类中定义 save() 或 delete() 方法 直接使用外键 获取频道ID: news.channel_id 不是: news.channel.id...Entry.objects.bulk_create([ Entry(headline="Python 3.0 Released"), Entry(headline="Python 3.1 Planned") ]) ...不是...Entry.objects.create(headline="Python 3.1 Planned") 这同样适用于 ManyToManyFields, 因此,这么做 team.members.add(me, my_friend) ...不是这么做

62510

提高Djang查询速度9种方法

select_related()方法会在查询时一次性将相关对象也查询出来,不是每次访问关联对象时都执行一次查询。例如,我们有一个Book模型和一个Author模型,它们之间存在一对多关系。...prefetch_related()方法会在查询时一次性将关联对象数据一并查询出来,不是每次访问关联对象时都执行一次查询。...使用values()和values_list()方法选择需要字段默认情况下,查询集返回完整模型对象。...但有时我们只需要获取特定字段,这时可以使用values()或values_list()方法来选择需要字段,以减少数据传输和内存占用。...values()方法返回一个字典列表,每个字典对应一个模型对象字段和:values = MyModel.objects.values('field1', 'field2')values_list()

27120

Django ORM 单表操作

") values 查询字段 返回是 QuerySet 类型数据,类似于 list,里面不是模型类对象,而是一个可迭代字典序列,字典里键是字段,是数据 def book(request...区别 values查询返回结果是列表套字典形式,字段名和数据都能够获取到 values_list查询返回结果是列表套元组形式,只返回数据 distinct 去重 distinct() 方法用于对数据进行去重...对象.delete() 返回:元组,第一个元素为受影响行数 book_obj=models.Book.objects.filter(pk=8).first().delete() 方式二:使用 QuerySet...类型数据.delete()(推荐) 返回:元组,第一个元素为受影响行数。...book_obj.save() return HttpResponse('入赘成功') 方式二:QuerySet 类型数据.update(字段名=更改数据)(推荐) 返回:整数

1.3K20

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

默认是 False. 是否包括 path 下面的全部子目录. 这三个参数可以同时使用. match 仅应用于 base filename, 不是路径全名....如果设置了choices ,默认表单将是一个选择框不是标准文本框,而且这个选择框选项就是choices 中选项。...那么django如何生成数据库表呢, django是根据 migration下面的脚本文件来生成数据表 每个migration文件夹下面有多个脚本,那么django如何知道该执行那个文件呢...queryset类型数据来调用,如果QuerySet包含数据,就返回True,否则返回False                空queryset类型数据也有布尔True和False,但是一般不用它来判断数据库里面是不是有数据...,不需要考虑时区问题,就将这个改为False,mysql是对时区不敏感,django往mysql里面出数据时候,如果这里为True,那么将mysql强制使用UTC时间,那么我们存储进入时间,

3K10

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

前言 django查询数据库方法很多,不同方法返回结果也不太一样,本篇详细讲解关于查询13个方法 返回对象是对象列表: all(), filter(), exclude(), order_by...(), reverse(), values(), values_list(), distinct() 返回结果是对象: get(), first(), last() 返回结果是布尔: exists()...() 返回是整个表内容, 这里返回是可迭代对象queryset,并没直接返回全部数据 如果想取出数据,需要用到for循环读取 from django.http import HttpResponse...调用者:objects管理器 返回queryset 查找用户名不是”yoyo”数据 et=User.objects.exclude(user_name=”yoyo”) order_by()...() 由queryset对象调用, 返回是queryset 一个元组序列 和values差不多,只是这里返回是元组 ret=User..objects.all().values_list

1.1K20

Django学习笔记之Queryset详解

manager类,不是自定义QuerySet类,一般我们没有自定义QuerySet类必要;django.db.models模块中Model类,我们定义表model时,就是继承它,它功能很强大...values_list()跟values()相似,它返回是一个ValuesListQuerySet,也类型于一个列表,不过它元素不是字典,而是元组。...一般,当我们不需要model instance方法且返回多个字段时,用values(*field),返回单个字段时用values_list(‘field’,flat=True),这里flat=True...是要求每个元素不是元组,而是单个,见下面例子。...,它们每个元素包含若干主表和关联表字段,不包含任何实体和关联实例,这种情况要用values()和values_list();第四种:返回model instance;第五种:单个,如aggregate

2.7K30

三、Django查询表记录

不是queryset类型,是行记录对象,返回结果有且只有一个,如果符合筛选条件对象超过一个或者没有都会抛出错误。...,就是通过limit 1,取一条来看看是不是有数据 values(*field) 用比较多,queryset类型数据来调用,返回一个ValueQuerySet——一个特殊QuerySet,运行后得到不是一系列...values_list(*field) 它与values()非常相似,它返回是一个元组序列,values返回是一个字典序列 distinct() values和values_list得到queryset...values_list 以元组方式返回 QuerySet dic distinct 去重 values和values_list得到queryset类型 queryset 模糊查询 Book.objects.filter...数据库时区和咱们django时区不同导致,了解一下就行了,你需要做就是将djangosettings配置文件里面的USE_TZ = True改为False,就可以查到结果了,以后这个就改为

92710

Django学习笔记之ORM多表操作

Django 还提供了一种直观高效方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系。...: 34.35} aggregate()是QuerySet 一个终止子句,意思是说,它返回一个包含一些键值对字典。...所以,如果你也想知道所有图书价格最大和最小,可以这样查询: >>> from django.db.models import Avg, Max, Min >>> Book.objects.aggregate...in publishList: print(publish_obj.name,publish_obj.MinPrice) annotate返回是querySet,如果不想遍历对象,可以用上...如果我们要对两个字段做比较,那该怎么做呢? Django 提供 F() 来做这样比较。F() 实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段

2.8K40

06.Django基础五之django模型层(二)多表操作

与之关联设置为可执行对象返回,设置:models.SET(可执行对象) ForeignKeydb_contraint参数 关系和约束大家要搞清楚,我不加外键能不能表示两个表之间关系啊,当然可以...四 基于双下划线跨表查询(基于join实现Django 还提供了一种直观高效方式在查询(lookups)中表示关联关系,它能自动确认 SQL JOIN 联系。...,有的部门还没有员工,那么他数据也会被统计出来,只不过为0,但是正向查的话只能统计出来有员工部门相关数据,因为通过你是员工找部门,不是通过部门找员工,结果集里面的数据个数不同,但是你想要统计结果是一样...,后面写values方法是获取这些对象属性,当然,可以加双下划线来连表获取其他关联表数据,但是获取其他关联表数据是你这些model对象对应数据,关联获取数据可能不是你想要最大对应那些数据...这个方法执行原始SQL查询,并返回一个django.db.models.query.RawQuerySet 实例。

2.7K20

DjangoDjango ORM 学习笔记

通过使用 ORM,我们只需要操作 Author 和 Blog 对象,不用操作相关数据库表。这里主要介绍一下 Django ORM 相关使用。...优缺点 使用 ORM 最大优点就是快速开发,让我们将更多精力放在业务上不是数据库上,下面是 ORM 几个优点 隐藏了数据访问细节,使通用数据库交互变得简单易行。...对象和关系之间并不是完美映射 一般来说 ORM 足以满足我们需求,如果对性能要求特别高或者查询十分复杂,可以考虑使用原生 SQL 和 ORM 共用方式 Django ORM 在 Django 框架中集成了...`content` + 2)) values 和 values_list 有些时候我们不需要获取实例中所有的数据,只需要获得几个字段数据即可,使用 values 和 values_list 可以指定检索字段...values 会返回一个 dict 数组, values_list返回 list 数组。

2.2K20

django queryset相加和筛选教程

一. aggregate使用方法 今天在同事指点下,仔细看了django中annotate使用方法,会根据查询条件来动态生成SQL语句,提高组合查询效率。...理解aggregate关键在于理解SQL中聚合函数:以下摘自百度百科:SQL基本函数,聚合函数对一组执行计算,并返回单个。除了 COUNT 以外,聚合函数都会忽略空。...values_list用法自行Google,或者print出来看一看。 此时,数据库实际执行代码,可以通过: print msgS.query 打印出来。...timedelta(days=7) messageTimeRange = (date_start, date_end) GroupList = getGroupIdLis(request.user) # 返回当前用户能查询...`msg_status` ORDER BY NULL 是不是很完美!! 以上这篇django queryset相加和筛选教程就是小编分享给大家全部内容了,希望能给大家一个参考。

88240

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

这篇文档剩下部分,着重于讲解如何以不做无用功方式使用Django。这篇文档也没有强调用在开销大操作上其它优化技巧,像general purpose caching。...不要获取你不需要东西 使用QuerySet.values()和values_list() 当你仅仅想要一个带有字典或者列表,并不需要使用ORM模型对象时,可以适当使用values()。...使用QuerySet.update()和delete() 通过QuerySet.update()使用批量SQL UPDATE语句,不是获取大量对象,设置一些再单独保存。...直接使用外键 如果你仅仅需要外键当中一个,要使用对象上你已经取得外键不是获取整个关联对象再得到它主键。...例如,执行: entry.blog_id 不是: entry.blog.id 不要做无谓排序 排序并不是没有代价;每个需要排序字段都是数据库必须执行操作。

1.1K30

django入门:数据模型

社群,有想学习django同学可以在公众号后台回复“django”,获取入群方式。...object 如果不重写 __str__ 方法返回数据直接显示 Category Object, # 重写该方法后,查找返回结果为该方法返回 def __str__(self):...数据库中字段是否可以为空 blank=(True/False) django Admin 中添加数据时是否可允许空 primary_key=(True/False) 主键...,对数据库进行相应修改 如果对命令行做了什么动作,我们可以通过运行如下命令行查看具体数据库操作python manage.py sqlmigrate blog 0001 其中 blog 0001 根据实际项目进行替换...__ 方法,则返回该方法所指定 c_test = Category.objects.get(name='test category') # 也可以通过 filter 关键词进行查找 c_test =

81210
领券