外键

DRF10大接口

自古美人都是妖i 提交于 2019-12-05 05:31:35
自定义Respoense 虽然我们已经在使用,rest_framework的Response,但是代码还是有点冗余,于是就可以自己重写一下(具体封装可以更具实际需求变更) 重写 from rest_framework.response import Response class APIResponse(Response): # 格式化data def __init__(self, status=0, msg='ok', results=None, http_status=None, headers=None, exception=False, **kwargs): # data默认加上json的response基础有数据状态码和数据状态信息 data = { 'status': status, 'msg': msg } # 如果后台有数据,响应数据 if results is not None: data['results'] = results # 后台的一切自定义响应数据直接放到响应数据data中 data.update(**kwargs) super().__init__(data=data, status=http_status, headers=headers, exception=exception) 使用 #查询正确,修改默认的状态码,和msg和http状态码

drf表操作

元气小坏坏 提交于 2019-12-05 05:23:09
drf表操作 一、面向对象二次封装Response ​ 为方便多次调用Response方法,可将Response进行二次封装 ​ response.py: from rest_framework.response import Response class APIResponse(Response): # 格式化data def __init__(self, status=0, msg='ok', results=None, http_status=None, headers=None, exception=False, **kwargs): data = { # json的response基础有数据状态码和数据状态信息 'status': status, 'msg': msg } if results is not None: # 后台有数据,响应数据 data['results'] = results data.update(**kwargs) # 后台的一切自定义响应数据直接放到响应数据data中 super().__init__(data=data, status=http_status, headers=headers, exception=exception) ​ views.py: class BookAPIView(APIview): def get(self,

数据库的设计

混江龙づ霸主 提交于 2019-12-05 05:04:57
1. 多表之间的关系 1. 分类: 1. 一对一: * 如:人和身份证 * 分析:一个人只有一个身份证,一个身份证只能对应一个人 2. 一对多(多对一): * 如:部门和员工 * 分析:一个部门有多个员工,一个员工只能对应一个部门 3. 多对多: * 如:学生和课程 * 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择 2. 实现关系: 1. 一对多(多对一): * 如:部门和员工 * 实现方式:在多的一方建立外键,指向一的一方的主键。 2. 多对多: * 如:学生和课程 * 实现方式:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键 3. 一对一: * 如:人和身份证 * 实现方式:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。 3. 案例 -- 创建旅游线路分类表 tab_category -- cid 旅游线路分类主键,自动增长 -- cname 旅游线路分类名称非空,唯一,字符串 100 CREATE TABLE tab_category ( cid INT PRIMARY KEY AUTO_INCREMENT, cname VARCHAR(100) NOT NULL UNIQUE ); -- 创建旅游线路表 tab_route /* rid 旅游线路主键,自动增长 rname

mysql中数据表记录的增删查改(2)

丶灬走出姿态 提交于 2019-12-05 04:53:45
select `数据表.字段1`, group_concat(`数据表.字段2`) from `数据表` group by `数据表.字段1` order by `数据表.字段1` desc; select * from `数据表名称` group by `字段名称1`,`字段名称2`; select `数据表.字段名称`, `关联表.字段名称` from `数据表名称` inner join `关联表名称` on `数据表.主键`=`关联表.外键`; select `数据表.字段名称`, `关联表.字段名称` from `关联表名称` inner join `数据表名称` on `数据表.主键`=`关联表.外键`; select `数据表.字段名称`, `关联表.字段名称` from `数据表名称`, `关联表名称` where `数据表.主键`=`关联表.外键`; select `数据表.字段名称`, `关联表1.字段名称`, `关联表2.字段名称` from `数据表` inner join `关联表1` on `数据表.主键`=`关联表1.外键` inner join `关联表2` on `数据表.主键`=`关联表2.外键`; select `数据表.字段名称`, `关联表1.字段名称`, `关联表2.字段名称` from `数据表`, `关联表1`, `关联表2`

第三章、drf-ModelSerializer

心不动则不痛 提交于 2019-12-05 04:33:21
ModelSerializer 序列化准备: 配置 settings.py # 注册rest_framework框架 INSTALLED_APPS = [ ... 'rest_framework' ] # 配置mysql数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'db10', 'USER': 'root', 'PASSWORD':'root', } } ​ """ 任何__init__.py文件中 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.contrib import admin from django.views

mysql-表关联和约束

冷暖自知 提交于 2019-12-04 23:44:17
表关联和约束 表关系: 一对一 字段设置不可重复unique 一对多 普通外键关联 多对多 中间表关联 创建表关联--外键: 1 create table 时,在最后面加入 constraint name foreign key(ziduan) referncese 表(字段) 关联索引名 从表字段 主表字段 2 alter table person add constraint dept_fk foreign key(dept_id) references dept(id)[on delete cascade on update cascade]; 通过外键名称解除外键约束 alter table person drop foreign key dept_fk;#此时索引还存在,也需要手动解除 外键约束: 1. 从表约束字段填入内容必须是主表内存在的 2. 从表引用记录,主表不可删除(默认),可修改非引用字段内容 3.设置可删除 on delete cascade on updare cascade 主表删除更新记录,从表引用记录同步更新删除 on delete set null on update set null 主表删除更新记录,从表为null 来源: https://www.cnblogs.com/chenlulu1122/p/11888697.html

mysql 复习

梦想的初衷 提交于 2019-12-04 23:27:04
SQL 什么是SQL? Structured Query Language :结构化查询语言 其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。 SQL通用语法 SQL 语句可以单行或多行书写,以分号结尾。 可使用空格和缩进来增强语句的可读性。 MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。 3 种注释 单行注释: -- 注释内容 或 # 注释内容(mysql 特有) 多行注释: /* 注释 */ SQL分类 1) DDL(Data Definition Language) 数据定义语言 用来定义数据库对象:数据库,表,列等。关键字: create , drop , alter 等 2) DML(Data Manipulation Language) 数据操作语言 用来对数据库中表的数据进行增删改。关键字: insert , delete , update 等 3) DQL(Data Query Language) 数据查询语言 用来查询数据库中表的记录(数据)。关键字: select , where 等 4) DCL(Data Control Language) 数据控制语言(了解) 用来定义数据库的访问权限和安全级别,及创建用户。关键字: GRANT , REVOKE 等 DDL: 操作数据库、表 操作数据库

MySQL常用命令

二次信任 提交于 2019-12-04 20:37:19
/* 启动 MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限验证登录 MySQL */ mysqld --skip-grant-tables -- 修改 root 密码 密码加密函数 password() update mysql.user set password=password('root'); SHOW PROCESSLIST -- 显示哪些线程正在运行 SHOW VARIABLES -- /* 数据库操作 */ ------------------ -- 查看当前数据库 select database(); -- 显示当前时间、用户名、数据库版本 select now(), user(), version(); -- 创建库 create database[ if not exists] 数据库名 数据库选项 数据库选项: CHARACTER SET charset_name COLLATE collation_name -- 查看已有库 show databases[ like 'pattern'] -- 查看当前库信息 show create database 数据库名 -- 修改库的选项信息 alter database 库名 选项信息 -- 删除库 drop

mysql 外键

↘锁芯ラ 提交于 2019-12-04 19:00:39
什么时候适合使用外键,什么时候不适合使用外键,使用外键有什么好处和坏处? 外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作。但是外键是否采用看业务应用场景,以及开发成本的,大致列下什么时候适合,什么时候不适合使用: 1. 互联网行业应用不推荐使用外键: 用户量大,并发度高,为此数据库服务器很容易成为性能瓶颈,尤其受IO能力限制,且不能轻易地水平扩展;若是把数据一致性的控制放到事务中,也即让应用服务器承担此部分的压力,而引用服务器一般都是可以做到轻松地水平的伸缩;【不适合】 2.传统行业【适合】 1>.软件应用的人数有限,换句话说是可控的; 2>.数据库服务器的数据量也一般不会超大,且活跃数据有限; 综合上述2句话描述,也即数据库服务器的性能不是问题,所以不用过多考虑性能的问题;另外,使用外键可以降低开发成本,借助数据库产品自身的触发器可以实现表与关联表之间的数据一致性和更新;最后一点,使用外键的方式,还可以做到开发人员和数据库设计人员的分工,可以为程序员承担更多的工作量; 为何说外键有性能问题: 1.数据库需要维护外键的内部管理; 2.外键等于把数据的一致性事务实现,全部交给数据库服务器完成; 3.有了外键,当做一些涉及外键字段的增,删,更新操作之后,需要触发相关操作去检查,而不得不消耗资源; 4.外键还会因为需要请求对其他表内部加锁而容易出现死锁情况; 二

唯一索引、外键的变种、SQL语句数据行操作补充

淺唱寂寞╮ 提交于 2019-12-04 18:35:05
0、唯一索引 unique对num进行唯一限制,表示num是独一无二的,uql是唯一索引名称 上面为联合索引:num和xx不能完全一样 1、外键的变种 a. 用户表和部门表   用户:     1 alex 1     2 root 1     3 egon 2     4 laoyao 3   部门:     1 服务     2 保安     3 公关 ===》 一对多 b. 用户表和博客表   用户表:     1 alex     2 root     3 egon     4 laoyao   博客表:             FK() + 唯一     1 /yuanchenqi/   4     2 /alex3714/    1     3 /asdfasdf/ 3     4 /ffffffff/ 2 ===> 一对一 程序代码: create table userinfo1( id int auto_increment primary key, name char(10), gender char(10), email varchar(64) )engine=innodb default charset=utf8; create table admin( id int not null auto_increment primary key, username