01 2019 档案
摘要:1、官方提供的三种部署方式: minikube: Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,仅用于尝试Kubernetes或日常开发的用户使用。 部署地址:https://kubernetes.io/docs/setup/minikube/ kubeadm Kub
阅读全文
摘要:1、Kubernetes简介和特性: Kubernetes是什么: Kubernetes是Google在2014年开源的一个容器集群管理系统,Kubernetes简称K8S。 K8S用于容器化应用程序的部署,扩展和管理。 K8S提供了容器编排,资源调度,弹性伸缩,部署管理,服务发现等一系列功能。 K
阅读全文
摘要:1、单价docker图形页面管理: Portainer是一个开源、轻量级Docker管理用户界面,基于Docker API,可管理Docker主机或Swarm集群,支持最新版Docker和Swarm模式。 1.1、创建卷 # docker volume create portainer_data 1
阅读全文
摘要:1、Harbor概述 Habor是由VMWare公司开源的容器镜像仓库。事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基于角色的访问控制 ,AD/LDAP集成以及审计日志等,足以满足基本企业需求。 官方地
阅读全文
摘要:1、Dockerfile格式: 注:从上到下进行 2、Dockerfiile指令: 3、构建镜像: 4、构建Nginx、PHP、Tomcat基础镜像: 架构如下: 5、快速搭建LNMP网站平台: Dockerfile_nginx: nginx.conf: user nobody; worker_pr
阅读全文
摘要:1、网络模式: • bridge –net=bridge 默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中。• host –net=host 容器不会获得一个独立的network namespace,而是与宿主机共用一个。这就意味着容器不会有自己的网卡信息,
阅读全文
摘要:ORM模型迁移迁移命令: 1、makemigrations:将模型生成迁移脚本。模型所在的app,必须放在settings.py中的INSTALLED_APPS中。这个命令有以下几个常用选项: app_label:后面可以跟一个或者多个app,那么就只会针对这几个app生成迁移脚本。如果没有任何的a
阅读全文
摘要:ORM作业准备和讲解: 数据库模型如下: 使用之前学到过的操作实现下面的查询操作: 1、查询平均成绩大于60分的同学的id和平均成绩; 2、查询所有同学的id、姓名、选课的数量、总成绩; 3、查询姓“李”的老师的个数; 4、查询没学过“李老师”课的同学的id、姓名; 5、查询学过课程id为1和2的所
阅读全文
摘要:QuerySet API详解-QuerySet转换为SQL的条件: 生成一个 QuerySet 对象并不会马上转换为 SQL 语句去执行。比如我们获取 Book 表下所有的图书: 我们可以看到在打印 connection.quries 的时候打印的是一个空的列表。说明上面的 QuerySet 并没有
阅读全文
摘要:QuerySet API详解-切片操作: 切片操作:有时候我们查找数据,有可能只需要其中的一部分。那么这时候可以使用切片操作来帮我们完成。 QuerySet 使用切片操作就跟列表使用切片操作是一样的。示例代码如下: 切片操作并不是把所有数据从数据库中提取出来再做切片操作。而是在数据库层面使用 LIM
阅读全文
摘要:QuerySet API详解-update和delete: update :执行更新操作,在 SQL 底层走的也是 update 命令。比如要将所有 图书的价格提高五元。示例代码如下: 注意这个方法走的是更新的逻辑。所以更新完成后保存到数据库中不会执行 save 方法,因此不会更新 auto_now
阅读全文
摘要:QuerySet API详解-distinct: distinct :去除掉那些重复的数据。这个方法如果底层数据库用的是 MySQL ,那么不能传递任何的参数。比如想要提取所有销售的价格超过80元的图书,并且删掉那些重复的,那么可以使用 distinct 来帮我们实现,示例代码如下: 需要注意的是,
阅读全文
摘要:QuerySet API详解-count和exists: count :获取提取的数据的个数。如果想要知道总共有多少条数据,那么建议使用 count ,而不是使用 len(articles) 这种。因为 count 在底层是使用 select count(*) 来实现的,这种方式比使用 len 函数
阅读全文
摘要:QuerySet API详解-get、create、get_or_create和bulk_create方法: create :创建一条数据,并且保存到数据库中。这个方法相当于先用指定的模型创建一个对象,然后再调用这个对象的 save 方法。示例代码如下: get_or_create :根据某个条件进
阅读全文
摘要:QuerySet API详解-defer和only: defer :在一些表中,可能存在很多的字段,但是一些字段的数据量可能是比较庞大的,而此时你又不需要,比如我们在获取文章列表的时候,文章的内容我们是不需要的,因此这时候我们就可以使用 defer 来过滤掉一些字段。这个字段跟 values 有点类
阅读全文
摘要:QuerySet API详解prefetch_related方法: prefetch_related :这个方法和 select_related 非常的类似,就是在访问多个表中的数据的时候,减少查询的次数。这个方法是为了解决 多对一 和 多对多 的关系的查询问题。比如要获取标题中带有 hello 字
阅读全文
摘要:QuerySet API详解-all和select_related方法: all:获取这个ORM模型的所有QuerySet对象(没有对对象进行过滤、修改等)。 select_related:在提取某个模型的数据的同时,也提前将相关联的数据提取出来。比如提取文章数据,可以使用select_relate
阅读全文
摘要:QuerySet API详解-values和values_list: values:用来指定在提取数据出来,需要提取哪些字段。默认情况下会把表中所有的字段全部都提取出来,可以使用values来进行指定,并且使用了values方法后,提取出的QuerySet中的数据类型不是模型,而是在values方法
阅读全文
摘要:管理应用程序数据: 将数据从宿主机挂载到容器中的三种方式: Docker提供三种方式将数据从宿主机挂载到容器中: volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。保存数据的最佳方式。 bind mounts:将宿主机上的任意位置的文件或者目录
阅读全文
摘要:创建容器常用选项: 废话不多说,直接看帮助命令: 常用的做个截图解释: 来个实例: 容器资源限制: 管理容器常用命令:
阅读全文
摘要:镜像管理: 镜像是什么? 一个分层存储的文件 一个软件的环境 一个镜像可以创建N个容器 一种标准化的交付 一个不包含Linux内核而又精简的Linux操作系统 镜像不是一个单一的文件,而是有多层构成。我们可以通过docker history <ID/NAME> 查看镜像中各层内容及大小,每层对应着D
阅读全文
摘要:QuerySet API详解-order_by: order_by:指定将查询的结果根据某个字段进行排序。如果要倒叙排序,那么可以在这个字段的前面加一个负号。示例代码如下: 一定要注意的一点是,多个order_by,会把前面排序的规则给打乱,而使用后面的排序方式。比如以下代码: 它只会根据作者的名字
阅读全文
摘要:QuerySet API详解-filter、exclude、annotate: 在使用 QuerySet 进行查找操作的时候,可以提供多种操作。比如过滤完后还要根据某个字段进行排序,那么这一系列的操作我们可以通过一个非常流畅的 链式调用 的方式进行。比如要从文章表中获取标题为 123 ,并且提取后要
阅读全文
摘要:objects对象所属类原理剖析: 我们通常做查询操作的时候,都是通过 模型名字.objects 的方式进行操作。其实 模型名字.objects 是一个 django.db.models.manager.Manager 对象,而 Manager 这个类是一个“空壳”的类,他本身是没有任何的属性和方法
阅读全文
摘要:Q表达式详解: 如果想要实现所有价格高于100元,并且评分达到9.0以上评分的图书。那么可以通过以下代码来实现: 以上这个案例是一个并集查询,可以简单的通过传递多个条件进去来实现。 但是如果想要实现一些复杂的查询语句,比如要查询所有价格低于10元,或者是评分低于9分的图书。那就没有办法通过传递多个条
阅读全文
摘要:F表达式详解: F表达式 是用来优化 ORM 操作数据库的。比如我们要将公司所有员工的薪水都增加1000元,如果按照正常的流程,应该是先从数据库中提取所有的员工工资到Python内存中,然后使用Python代码在员工工资的基础之上增加1000元,最后再保存到数据库中。这里面涉及的流程就是,首先从数据
阅读全文
摘要:ORM聚合函数详解-Sum: Sum :求指定对象的总和。比如要求图书的销售总额。那么可以使用以下代码实现: 以上的代码 annotate 的意思是给 Book 表在查询的时候添加一个字段叫做 total ,这个字段的数据来源是从 BookStore 模型的 price 的总和而来。 values
阅读全文
摘要:ORM聚合函数详解-Max和Min: Max 和 Min :获取指定对象的最大值和最小值。 比如想要获取 Author 表中,最大的年龄和最小的年龄分别是多少。那么可以通过以下代码来实现: 如果最大的年龄是88,最小的年龄是18。那么以上的result将为: 具体的原生SQL如下: 具体实例截图如下
阅读全文
摘要:ORM聚合函数详解-Count: Count :获取指定的对象的个数。示例代码如下: 以上的 result 将返回 Book 表中总共有多少本图书。 Count 类中,还有另外一个参数叫做 distinct ,默认是等于 False ,如果是等于 True ,那么将去掉那些重复的值。比如要获取作者表
阅读全文
摘要:ORM聚合函数详解-aggregate和annotate: aggregate和annotate的区别: 1、aggregate :返回使用聚合函数后的字段和值。2、annotate :在原来模型字段的基础之上添加一个使用了聚合函数的字段,并且在使用聚合函数的时候,会使用当前这个模型的主键进行分组(
阅读全文
摘要:ORM聚合函数详解-Avg: Avg:求平均值。比如想要获取所有图书的价格平均值。那么可以使用以下代码实现: 以上的打印结果是: 其中price__avg的结构是根据field__avg规则构成的。如果想要修改默认的名字,那么可以将Avg赋值给一个关键字参数。示例代码如下: 那么以上的结果打印为:
阅读全文
摘要:ORM聚合函数详解-准备工作: 如果你用原生SQL,则可以使用聚合函数来提取数据。比如提取某个商品销售的数量,那么可以使用count,如果想要知道商品销售的平均价格,那么可以使用avg。聚合函数是通过aggregate方法来实现的。在讲解这些聚合函数的用法的时候,都是基于以下的模型对象来实现的。 创
阅读全文
摘要:学完这门课程会获得什么? 掌握Docker核心概念 熟悉Docker工作原理 独立使用Docker部署应用程序 接入CI/CD,实现环境标准化 入门须知: 熟悉Linux操作系统 了解域名解析原理 了解网络 第 1 章: Docker概述 Docker是什么: 使用最广泛的开源容器引擎 一种操作系统
阅读全文
摘要:ORM查询条件详解-isnull和regex: isnull:根据值是否为空进行查找。示例代码如下: 以上的代码的意思是获取所有发布日期不为空的文章。将来翻译成 SQL 语句如下: regex和iregex: 大小写敏感和大小写不敏感的正则表达式。示例代码如下: 以上代码的意思是提取所有标题以 he
阅读全文
摘要:【Django数据库】ORM查询条件详解-date、time、year、week_day等: year:根据年份进行查找。示例代码如下: 以上的代码在翻译成 SQL 语句为如下: month: 同 year ,根据月份进行查找。day:同 year ,根据日期进行查找。week_day:Django
阅读全文
摘要:【Django数据库】ORM查询条件详解-range range:判断某个 field 的值是否在给定的区间中。示例代码如下: 以上代码的意思是提取所有发布时间在 2019/1/7 21点 到 22点之间的文章。将翻译成以下的 SQL 语句: 需要注意的是,以上提取数据,不会包含最后一个值。也就是不
阅读全文
摘要:ORM查询条件详解-startswith和endswith: startswith:判断某个字段的值是否是以某个值开始的。大小写敏感。示例代码如下: 以上代码的意思是提取所有标题以 fuck 字符串开头的文章。将翻译成以下 SQL 语句: istartswith: 类似于 startswith ,但
阅读全文
摘要:ORM查询条件详解-gt、gte、lt和lte: 1、gt:某个 field 的值要大于给定的值。示例代码如下: 以上代码的意思是将所有 id 大于4的文章全部都找出来。将翻译成以下 SQL 语句: 2、gte:类似于 gt ,是大于等于。 3、lt:类似于 gt 是小于。 4、lte:类似于 lt
阅读全文
摘要:ORM查询条件详解-in和关联模型查询: in:提取那些给定的 field 的值是否在给定的容器中。容器可以为 list 、 tuple 或者任何一个可以迭代的对象,包括 QuerySet 对象。示例代码如下: 以上代码在翻译成 SQL 语句为如下: 实例截图如下: 当然也可以传递一个 QueryS
阅读全文
摘要:ORM查询条件详解-contains和Icontains: contains:大小写敏感,判断某个字段是否包含了某个数据。示例代码如下: 在翻译成 SQL 语句为如下: 要注意的是,在使用 contains 的时候,翻译成的 sql 语句左右两边是有百分号的,意味着使用的是模糊查询。而 exact
阅读全文
摘要:查询操作: 查找是数据库操作中一个非常重要的技术。查询一般就是使用filter、exclude以及get三个方法来实现。我们可以在调用这些方法的时候传递不同的参数来实现查询需求。在 ORM 层面,这些查询条件都是使用 field + __ + condition 的方式来使用的。以下将那些常用的查询
阅读全文
摘要:准备工作,啥也不说了,直接上图说明: 1、每次创建APP和迁移数据库都要打开cmd窗口,有点麻烦;如下界面窗口可以直接使用: 2、pycharm连接MySQL数据库(其中遇到驱动问题:百度一下): 备注:直接打开数据库的表,如果要保存,使用如下按键:crtl + enter
阅读全文
摘要:表关系之多对多场景: 1、应用场景:比如文章和标签的关系。一篇文章可以有多个标签,一个标签可以被多个文章所引用。因此标签和文章的关系是典型的多对多的关。2、实现方式:Django 为这种多对多的实现提供了专门的 Field 。叫做 ManyToManyField 。还是拿文章和标签为例进行讲解。 示
阅读全文
摘要:表关系之一对一应用场景: 比如一个用户表和一个用户信息表。在实际网站中,可能需要保存用户的许多信息,但是有些信息是不经常用的。如果把所有信息都存放到一张表中可能会影响查询效率,因此可以把用户的一些不常用的信息存放到另外一张表中我们叫做UserInfo。但是用户表User和用户信息表UserInfo就
阅读全文
摘要:表关系:表之间的关系都是通过外键来进行关联的。而表之间的关系,无非就是三种关系:一对一、一对多(多对一)、多对多等。以下将讨论一下三种关系的应用场景及其实现方式。 一对多:1. 应用场景:比如文章和作者之间的关系。一个文章只能由一个作者编写,但是一个作者可以写多篇文章。文章和作者之间的关系就是典型的
阅读全文
摘要:外键删除操作: 如果一个模型使用了外键。那么在对方那个模型被删掉后,该进行什么样的操作。可以通过 on_delete 来指定。可以指定的类型如下:1、CASCADE :级联操作。如果外键对应的那条数据被删除了,那么这条数据也会被删除。2、PROTECT :受保护。即只要这条数据引用了外键的那条数据,
阅读全文
摘要:外键:在 MySQL 中,表有两种引擎,一种是 InnoDB ,另外一种是 myisam 。如果使用的是 InnoDB 引擎,是支持外键约束的。外键的存在使得 ORM 框架在处理表关系的时候异常的强大。因此这里我们首先来介绍下外键在 Django 中的使用。 类定义为 class ForeignKe
阅读全文
摘要:模型中 Meta 配置: 对于一些模型级别的配置。我们可以在模型中定义一个类,叫做 Meta 。然后在这个类中添加一些类属性来控制模型的作用。比如我们想要在数据库映射的时候使用自己指定的表名,而不是使用模型的名称。那么我们可以在 Meta 类中添加一个 db_table 的属性。示例代码如下: 以下
阅读全文
摘要:Field的常用参数: null: 如果设置为 True , Django 将会在映射表的时候指定是否为空。默认是为 False 。在使用字符串相关的 Field (CharField/TextField)的时候,官方推荐尽量不要使用这个参数,也就是保持默认值 False 。因为 Django 在处
阅读全文
摘要:EmailField:类似于 CharField 。在数据库底层也是一个 varchar 类型。最大长度是254个字符; FileField:用来存储文件的。这个请参考后面的文件上传章节部分; ImageField:用来存储图片文件的。这个请参考后面的图片上传章节部分; FloatField:浮点类
阅读全文
摘要:django.utils.timezone.now方法: 会根据settings.py中是否设置了USE_TZ=True获取当前的时间。如果设置了,那么就获取一个aware类型的UTC时间。如果没有设置,那么就会获取一个navie类型的时间。 django.utils.timezone.localt
阅读全文
摘要:navie时间和aware时间: 什么是navie时间?什么是aware时间? pytz库: 专门用来处理时区的库。这个库会经常更新一些时区的数据,不需要我们担心。并且这个库在安装Django的时候会默认的安装。如果没有安装,那么可以通过pip install pytz的方式进行安装。 astime
阅读全文
摘要:常用字段: 在 Django 中,定义了一些 Field 来与数据库表中的字段类型来进行映射。以下将介绍那些常用的字段类型。 AutoField: 映射到数据库中是 int 类型,可以有自动增长的特性。一般不需要使用这个类型,如果不指定主键,那么模型会自动的生成一个叫做 id 的自动增长的主键。如果
阅读全文
摘要:ORM对数据库的增删改查基本操作: 创建模型如下: 基本的增删改查如下:
阅读全文
摘要:创建ORM模型: ORM 模型一般都是放在 app 的 models.py 文件中。每个 app 都可以拥有自己的模型。并且如果这个模型想要映射到数据库中,那么这个 app 必须要放在 settings.py 的 INSTALLED_APP 中进行安装。以下是写一个简单的书籍 ORM 模型。示例代码
阅读全文
摘要:ORM模型介绍: 随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了: 1、SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近的SQL语句;2、很多SQL语句是在业务逻辑中拼出来的,如果有数据库需要更改,就要去修改这些逻辑,这会很容易
阅读全文
摘要:这两节开始做个简单的图书管理系统(基于43节课程学的原生Django使用原生SQL操作): 主要实现如下功能:图书查看(包括详情)、添加和删除: 1、创建一个book_manage工程(使用pycharm创建时,同时创建一个APP——cms),url情况: 2、setting.py中静态文件加载,M
阅读全文

浙公网安备 33010602011771号