外键

ModelSerializer(重点) 基表 测试脚本 多表关系建外键 正反查 级联 插拔式连表 序列化反序列化整合 增删查 封装response

筅森魡賤 提交于 2019-12-02 16:22:21
一、前戏要做好 配置:settings.py #注册drf INSTALLED_APPS = [ # ... 'api.apps.ApiConfig', 'rest_framework', ] ​ #配置数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'dg_proj', 'USER': 'root', 'PASSWORD': '123', } } """ 在任何(根或者app)的__init__文件中声明数据库 import pymysql pymysql.install_as_MySQLdb() """ #国际化 提示时间等从英语转化为汉字 LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = False ​ # 开放图像路经,后面还有他用,这个配置和静态文件路径配置非常相似,暴露图像资源 MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 路由 # 主路由 from django.conf.urls import url, include from

Django-model进阶

核能气质少年 提交于 2019-12-02 16:21:33
目录 Django-model进阶 一 QuerySet对象 1.1可切片 1.2可迭代 1.3惰性查询 1.4缓存机制 1.5 exists()与iterator()方法 二 中介模型 三 查询优化 3.1表数据 3.2 select_related 3.3 prefetch_related() 四 extra 4.1参数之select 4.2参数之 where / tables 五 原生sql QuerySet方法大全 update()与save()的区别 select_related和prefetch_related bulk_create批量插入数据 方法大全 六 整体插入 七 事务操作 八 defer和only Django-model进阶 一 QuerySet对象 1.1可切片 使用Python 的切片语法来限制 查询集 记录的数目 。它等同于SQL 的 LIMIT 和 OFFSET 子句。 Entry.objects.all()[:5] # (LIMIT 5) Entry.objects.all()[5:10] # (OFFSET 5 LIMIT 5) 不支持负的索引(例如 Entry.objects.all()[-1] )。通常, 查询集 的切片返回一个新的 查询集 —— 它不会执行查询。 1.2可迭代 articleList=models.Article

Django的日常-模型层(2)

蓝咒 提交于 2019-12-02 16:06:35
目录 Django的日常-模型层(2) 几种常用的查询方式 聚合查询 分组查询 F和Q查询 查询优化相关 orm中常见字段 orm的事务操作 Django的日常-模型层(2) 几种常用的查询方式 聚合查询 ​ 聚合,我们应该有这个概念,因为在数据库的SQL语言里面有聚合函数的概念,聚合,字面意思来说,就是把一类东西放在一起,但是跟分组又不太一样. ​ 我们知道我们在写SQL语句的时候,分组groupby和聚合函数是分不开的,因为一旦select语句里面有分组,那么我们就只能查询到分组依据的字段以及一些聚合函数组成的字段,别的字段写在select后面会报错的. ​ 所以,既然ORM是用来操作数据库的,那么我们在使用聚合查询的时候,就要遵循这个规律.聚合查询的具体用法如下: # 首先导入聚合函数,聚合函数的关键字为aggregate from django.db.models import Max,Min,Sum,Count,Avg # 大概格式为:models.表名.objects.查询方式(匹配条件).aggregate(聚合函数(表中的字段)) res = models.Book.objects.all().aggregate(Avg('price')) print(res) 分组查询 ​ 分组查询的关键字为annotate,使用起来非常的简单

Mysql多表关联删除(多外键)

China☆狼群 提交于 2019-12-02 15:08:13
多表关联,存在多个外键,级联删除 需要先取消外键约束,才能删除对应的表。删除完后,将外键约束设置上!! 记得删除时开启事务! Code -- 开启事务 START TRANSACTION; -- 取消外键约束 才能删除表 SET foreign_key_checks = 0; -- 删除航段 delete os from order_itinerary oi left join flight_order f on f.id = oi.order_id left join order_segment os on os.itinerary_id = oi.id WHERE f.cid = "8000yiEterm" -- 删除行程 delete oi FROM flight_order f LEFT JOIN order_itinerary oi ON f.id = oi.order_id WHERE f.cid = "8000yiEterm" -- 删除乘客 delete op FROM flight_order f LEFT JOIN order_passenger op ON f.id = op.order_id WHERE f.cid = "8000yiEterm" -- 删除报表 DELETE ort FROM flight_order f LEFT JOIN order

面试必问:ACID/CAP

会有一股神秘感。 提交于 2019-12-02 14:51:57
转载: https://www.jdon.com/artichect/acid-cap.html ACID和CAP的详尽比较 事务机制ACID和CAP理论是数据管理和分布式系统中两个重要的概念,很不巧,这两个概念中都有相同的“C”代表 "Consistency" 一致性,但是实际上是完全不同的意义,下面是比较两个概念的不同之处。 什么是ACID? 事务的定义和实现一直随着数据管理的发展在演进,当计算机越来越强大,它们就能够被用来管理越来越多数据,最终,多个用户可以在一台计算机上共享数据,这就导致了一个问题,当一个用户修改了数据而另外一个还在使用旧数据进行计算过程中,这里就需要一些机制来保证这种情况不会发生。 ACID规则原来是在1970被Jim Gray定义,ACID事务解决了很多问题,但是仍然需要和性能做平衡协调,事务越强,性能可能越低,安全可靠性和高性能是一对矛盾。 一个事务是指对数据库状态进行改变的一系列操作变成一个单个序列逻辑元操作,数据库一般在启动时会提供事务机制,包括事务启动 停止 取消或回滚。 但是上述事务机制并不真的实现“事务”,一个真正事务应该遵循ACID属性,ACID事务才真正解决事务,包括并发用户访问同一个数据表记录的头疼问题。 ACID的定义: Atomic原子性: 一个事务的所有系列操作步骤被看成是一个动作,所有的步骤要么全部完成要么一个也不会完成

MySQL基本用法

杀马特。学长 韩版系。学妹 提交于 2019-12-02 11:38:18
以下内容的一些总结 create,alter,drop,show, 用于 表/数据库 DDL CRUD后都要加database/databases/table/tables select database(); -DOS窗口中查询当前正在使用的数据库,使用用use。 表中数据的增加用insert into,修改update,删除delete这两个一般加上限定条件WHERE DQL中NULL不能用“==” 等运算符判读,需要使用IS/IS NOT where与hanving限定的区别,在分组查询中,where限定是在分组之前,不满足条件不参与分组,having限定是在分组之后,不满足条件不会被查询出来。 where 后不能进行聚合函数的判断,having可以 修改表,进行数据项约束: alter table 表名 modify 列名 数据类型 NOT NULL; mysql中,唯一约束限定的列的值可以有多个null 删除特例 删除主键约束:ALTER TABLE stu DROP PRIMARY KEY; 删除唯一约束:ALTER TABLE stu DROP INDEX 列名; MySQL数据库软件安装与卸载 卸载 去mysql的安装目录找到my.ini文件 复制 datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

第五章、Django之多表查询进阶与事务

柔情痞子 提交于 2019-12-02 08:49:26
目录 第五章、Django之多表查询 一、聚合查询 二、分组查询 三、F与Q查询 四、查询优化 五、连表操作和子查询 六、Django开启事务 第五章、Django之多表查询 一、聚合查询 关键字 : aggregate from django.db.models import Max,Min,Count,Sum,Avg 统计所有书平均价格 res = models.Book.objects.all().aggregate(Avg('price')) res1 = models.Book.objects.all().aggregate(Max('price')) res2 = models.Book.objects.all().aggregate(Min('price')) res3 = models.Book.objects.all().aggregate(Sum('price')) res4 = models.Book.objects.all().aggregate(Count('title')) res5 = models.Book.objects.all().aggregate(Avg('price'),Max('price'),Min('price'),Sum('price'),Count('title')) print(res5) 二、分组查询 关键字

Django基础之模型层(下)

一笑奈何 提交于 2019-12-02 08:47:11
聚合查询 关键字: aggregate from django.db.models import Max,Min,Sum,Count,Avg 统计所有书的平均价格 models.Book.objects.all().aggregate(Avg('price')) #拿所有的书籍的价格的平均值 这样的话就可以求最大的价格,最小的价格等 分组查询 关键字: annotate 统计每一本书的作者个数 models.Book.objects.annotate(author_num = Count('author')).values('title') 统计每一个出版社卖的最便宜的书的价格 models.Book.objects.annotate(price_min=Min('book__price')).values('price_min') 统计不止一个作者的图书 models.Book.objects.annotate(author_num = Count('author')).values('author_num').filter(author__num__gt=1) 查询各个作者出的书的总价格 models.Author.objects.annotate(sum_price = Sum('book__price')).values('sum_price') F与Q查询 F查询

MySQL_2_约束和多表查询

早过忘川 提交于 2019-12-02 07:03:20
MySQL数据库 第四章 数据的完整性 作用:保证用户输入的数据保存到数据库中是正确的。 确保数据的完整性=在创建表时给表中添加约束。 完整性的分类: 实体完整性; 域完整性; 引用完整性; 4.1 实体完整性 实体:即表中的一行(一条记录)代表一个实体(entity)。 实体完整性的作用:标识每一行数据不重复。 约束类型: 主键约束(primary key) 唯一约束(unique) 自动增长列(auto_increment) 4.1.1 主键约束(primary key) ​ 注:每个表中要有一个主键 ​ 特点:数据唯一,且不能为null ​ 示例: ​ 第一种添加方式: CREATE TABLE studdent( id int primary key, name varchar(50) ); ​ 第二种添加方式:此种方式优势在于可以创建联合主键 CREATE TABLE student( id int, name varchar(50), primary key(id) ); CREATE TABLE student( classid int, stuid int, name varchar(50), primary key(classid,stuid) ); ​ 第三种添加方式:先创建表,然后再添加主键 CREATE TABLE studdent( id int;