本文首发于本人微信公众号:Hunter后端原文链接:Django笔记九之model查询filter、exclude、annotate、order_by 在接下来四五篇笔记中,将介绍model查询方法的各个细节,为我们的查询操作提供各种便利。 本篇笔记将介绍惰性查找、filter、exclude、annotate等方法,目录如下: 惰性查找 filter exclude annotate alias order_by 1、惰性查找 前面我们在介绍Django增删改查的时候,提到过他的惰性查找的规则。 也就是说普通的filter语句执行时,系统并不会去查询数据库,只有当我们真正使用里面的数...

  pwciJmn0pWhj   2023年11月02日   42   0   0 Python

本文首发于本人微信公众号:Hunter后端原文链接:Django笔记十之指定字段取值及distinct去重处理 这篇笔记将介绍reverse、distinct、values和values_list的用法。 本篇笔记目录如下: reverse() values() values_list() distinct() using() 1、reverse() 对QuerySet返回的结果进行反转,使用方法如下: fromblog.modelsimportBlog Blog.objects.filter(id__gte=2).reverse() 通过reverse()方法,可以使原本是某个顺序...

  pwciJmn0pWhj   2023年11月02日   40   0   0 Python

本文首发于微信公众号:Hunter后端原文链接:Django笔记十一之外键查询优化select_related和prefetch_related 本篇笔记目录如下: select_related prefetch_related 在介绍select_related和prefetch_related这两个函数前,我们先来看一个例子。 对于,Entry和Blog这两个model,前面介绍过,Blog是Entry的外键,如下: classBlog(models.Model): name=models.CharField(max_length=100) tagline=models.TextF...

  pwciJmn0pWhj   2023年11月02日   80   0   0 Python

本文首发于微信公众号:Hunter后端原文链接:Django笔记十二之defer、only指定返回字段 本篇笔记将介绍查询中的defer和only两个函数的用法,笔记目录如下: defer only 1、defer defer的英语单词的意思是延迟、推迟,我们可以通过将字段作为参数传入,可以达到在获取数据的时候指定不获取该字段数据,常用于一些textfield字段上。 假设我们有一个TestModel,有一个字段名为text_field,字段类型为textfield,里面存了大量字符串数据. 那么如果我们在获取这个model数据的时候,只想要这个model的其他字段信息,text_fi...

  pwciJmn0pWhj   2023年11月02日   92   0   0 Python

本篇笔记将介绍update和create的一些其他用法,目录如下: get_or_create update_or_create select_for_update bulk_create bulk_update 1、get_or_create 前面我们介绍过get()和create()的用法,那么get_or_create()的意思很简单,就是获取或者创建,如果存在就返回,不存在就先创建再返回。 假设对于Blogmodel,我们想看下数据库有没有name="hunter",tagline="tagline_test"的数据,没有的话创建并获取这条数据,有的话,就直接获取。 在之前我们操作...

  pwciJmn0pWhj   2023年11月02日   104   0   0 Python

本篇笔记将介绍一些Django查询中统计总数、最新纪录和空值判断等功能。 count in_bulk latest、earliest first、last exists contains、icontains gt、gte、lt、lte startswith、istartswith isnull 1、count 返回查询的QuerySet的总数。 比如想查询Blog下name='hunter'的总数: Blog.objects.filter(name="hunter").count() 返回的结果直接是一个整数,类似的SQL代码如下: selectcount()fromblog_blogw...

  pwciJmn0pWhj   2023年11月02日   30   0   0 Python

这一篇介绍关于范围,日期的筛选 in range date year week weekday quarter hour 1、in in对应于MySQL中的in操作,可以接受数组、元组等类型数据作为参数: Blog.objects.filter(id__in=[1,2,3]) 对应的SQL是: selectfromblog_blogwhereidin(1,2,3); 字符串也可以作为参数,但是转义后的SQL的意思不太一样: Blog.objects.filter(name__in="abc") 对应的SQL为: selectfromblog_blogwherenamein('a'...

  pwciJmn0pWhj   2023年11月02日   47   0   0 Python

本文首发于微信公众号:Hunter后端原文链接:Django笔记十六之aggregate聚合操作 这一篇笔记介绍一下关于聚合的操作,aggregate。 常用的聚合操作比如有平均数,总数,最大值,最小值等等 用到的model如下 classAuthor(models.Model): name=models.CharField(max_length=100) age=models.IntegerField() classPublisher(models.Model): name=models.CharField(max_length=300) classBook(models.M...

  pwciJmn0pWhj   2023年11月02日   86   0   0 Python

本文首发于微信公众号:Hunter后端 原文链接:Django笔记十八之save函数的继承操作和指定字段更新等实例方法 这篇笔记主要介绍Django一些实例方法。 什么是实例,我们知道通过filter()的一些筛选方法,得到的是QuerySet,而QuerySet取单条数据,通过索引,或者first()或者last()等方法,得到的单条数据,就是一个model的实例。 我们接下来要介绍的就是这种单条实例的一些方法。 save()的继承操作 refreshfromdb,从数据库中更新实例数据 自增的主键 指定字段更新save() 1、save()的继承操作 对于一个model,我们可以通...

  pwciJmn0pWhj   2023年11月02日   111   0   0 Python

本文首发于微信公众号:Hunter后端原文链接:Django笔记十七之groupby分组用法总结 这篇笔记介绍Django里面model的groupby对应的一些操作。 用到的Model如下: classTestModel(models.Model): num=models.IntegerField() user_id=models.IntegerField() create_date=models.DateField() 我们写入几条数据: TestModel.objects.create(num=78,user_id=1,create_date="2022-01-01") TestM...

  pwciJmn0pWhj   2023年11月02日   50   0   0 Python

本文首发于微信公众号:Hunter后端原文链接:Django笔记十九之manager用法介绍 首先介绍一下manager的使用场景,比如我们有一些表级别的,需要重复使用的功能,都可以使用manager来实现。 比如我们在前面的笔记中介绍的model的create()、update()等方法,Blog.objects.create()中前面的objects就是一种manager,不过这是系统给我们定义的。 那么我们也可以自己通过manager的方式来定义一些通用的函数方便我们在系统中使用。 定义manager 使用manager 通过manager更改原始的QuerySet 1、定义ma...

  pwciJmn0pWhj   2023年11月02日   15   0   0 Python

本文首发于公众号:Hunter后端原文链接:Django笔记二十之手动编写migration文件 前面介绍过,migration文件主要记录的是Django系统model的变化,然后通过migrate命令将变化适配到数据库中。 比如在某个application下新增了某张表,或者对某张表更改了字段,可以生成migration文件,然后通过migrate更改到数据库。 除了系统能够自动生成的,我们还可以手动创建migration文件来操作数据库,这个用途主要是用于比如,创建表后,需要写入一些初始化的数据的情况。 基础命令 migration文件介绍 自定义migration文件 RunSQ...

  pwciJmn0pWhj   2023年11月02日   104   0   0 Python

本文首发于公众号:Hunter后端原文链接:Django笔记二十一之使用原生SQL查询数据库 Django提供了两种方式来执行原生SQL代码。 一种是使用raw()函数,一种是使用connection.cursor()。 但是官方还是推荐在使用原生SQL之前,尽量的先去探索一下QuerySet提供的各种API。 目前而言,官方文档提供的各种API是能够满足绝大多数的应用场景的。 以下是本篇笔记的目录: raw() connection.cursor() 多数据库操作 1、raw() 这个方法可以用来操作原生SQL,然后返回model实例: 我们以Blog作为示例,使用的代码如下: fo...

  pwciJmn0pWhj   2023年11月02日   33   0   0 Python

本文首发于公众号:Hunter后端原文链接:Django笔记二十二之多数据库操作 这一篇笔记介绍一下多数据库操作。 在第十篇笔记的时候,简单介绍过using()的使用方法,多个数据库就是通过using(db_alias)的方式来来指定选中的数据库,这里介绍一下同步库表结构时候的操作。 定义方式 同步命令 指定数据库操作 1、定义方式 在settings.py的DATABASES变量中可以定义多个数据库,如果是多个数据库,示例如下: DATABASES={ 'default':{ 'NAME':'app_data', 'ENGINE':'django.db.backends.postgr...

  pwciJmn0pWhj   2023年11月02日   42   0   0 Python

本文首发于公众号:Hunter后端原文链接:Django笔记二十三之条件表达式搜索、更新等操作 这一篇笔记将介绍条件表达式,就是如何在model的使用中根据不同的条件筛选数据返回。 这个操作类似于数据库中ifelifelse的逻辑。 以下是本篇笔记的目录: model和数据准备 When和Case操作新增字段返回 条件搜索 条件更新 条件聚合 1、model和数据准备 这篇笔记我们用到的model是Client,放在blog/models.py下 以下是Client的model定义: classClient(models.Model): REGULAR='R' GOLD='G' PLA...

  pwciJmn0pWhj   2023年11月02日   109   0   0 Python

本文首发于公众号:Hunter后端原文链接:Django笔记二十四之数据库函数之比较和转换函数 这一篇笔记开始介绍几种数据库函数,以下是几种函数及其作用 Cast转换类型 Coalesce优先取值 Greatest返回较大值 Nullif值相同返回None 1、model准备 这一篇笔记我们主要用到Author和Entrymodel作为示例,下面的是Authormodel: classAuthor(models.Model): name=models.CharField(max_length=200) email=models.EmailField(null=True,default=...

  pwciJmn0pWhj   2023年11月02日   86   0   0 Python

本文首发于公众号:Hunter后端原文链接:Django笔记二十五之数据库函数之日期函数 日期函数主要介绍两个大类,Extract()和Trunc() Extract()函数作用是提取日期,比如我们可以提取一个日期字段的年份,月份,日等数据 Trunc()的作用则是截取,比如2022-06-1812:12:12,我们可以根据需求获取到日期2020-06-18,或者更细粒度到时分秒 这次我们用到下面这个model: classExperiment(models.Model): start_datetime=models.DateTimeField() start_date=models.Da...

  pwciJmn0pWhj   2023年11月02日   36   0   0 Python

本文首发于公众号:Hunter后端原文链接:Django笔记二十六之数据库函数之数学公式函数 这一篇来介绍一下公式函数,主要是数学公式。 其中sin,cos这种大多数情况下用不上的就不介绍了,主要介绍下面几种: Abs()绝对值 Ceil()向上取整 Floor()向下取整 Mod()取余 Power()乘方 Round()四舍五入 Sqrt()获取平方根 我们用到下面这个model: classMathFunction(models.Model): x=models.FloatField(null=True,default=None) y=models.FloatField(null...

  pwciJmn0pWhj   2023年11月02日   47   0   0 Python

本文首发于公众号:Hunter后端原文链接:Django笔记二十七之数据库函数之文本函数 这篇笔记将介绍如何使用数据库函数里的文本函数。 顾名思义,文本函数,就是针对文本字段进行操作的函数,如下是目录汇总: Concat()——合并 Left()——从左边开始截取 Length()——获取字符串长度 Lower()——小写处理 LPad()——从左边填充指定字符串 MD5()——获取字符串MD5哈希值 Repeat()——重复指定字段值 Replace()——替换指定内容 Reverse()——字段内容反转返回 StrIndex()——获取第一个匹配指定字符串的下标 SubStr()——...

  pwciJmn0pWhj   2023年11月02日   88   0   0 Python

本文首发于公众号:Hunter后端原文链接:Django笔记二十八之数据库查询优化汇总 这一篇笔记将从以下几个方面来介绍Django在查询过程中的一些优化操作,有一些是介绍如何获取Django查询转化的sql语句,有一些是理解QuerySet是如何获取数据的。 以下是本篇笔记目录: 性能方面 使用标准的数据库优化技术 理解QuerySet 操作尽量在数据库中完成而不是在内存中 使用唯一索引来查询单个对象 如果知道需要什么数据,那么就立刻查出来 不要查询你不需要的数据 使用批量的方法 1、性能方面 1.connection.queries 前面我们介绍过connection.querie...

  pwciJmn0pWhj   2023年11月02日   87   0   0 Python
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~