数据库表的对应关系 1.一对一   #关联字段写在那张表都可以 PS:只要写OneToOneField就会自动加一个id 2.一对多  #关系确立,关联字段写在多的一方 3.多对多   #多对多的关系需要创建第三张表 PS:创建多对多的时候,ORM会自动创建第三张表,这张就是中间表 PS:自动 创建的第三章表命名规则就是app_表名_表名 创建表的对应关系 '''图书管理系统的数据库''' class Author(models.Model): '''作家的姓名和年龄''' # 表的主键可以不写…
单表操作-增.删.改.查 ret=models.User.objects.filter(id=1)  #这里的结果是一个queryset对象 ret=modles.User.Objects.filter(ud=1).first()   #这里查询的结果是一个User对象,User就是表 新增记录 第一种方式通过对象来插入 urls.py from django.conf.urls import urlfrom django.contrib import adminfrom app01 impor…
基于对象的跨表查询 基于对象的跨表查询'''正向和反向查询'''# 正向 ----> 关联字段在当前表中,从当前表向外查叫正向# 反向 ---> 关联字段不在当前表中,当当前表向外查叫反向 '''一对一的查询'''# 查询lqz这个人的地址 正向查询按字段author = models.Author.objects.filter(name='qlz').first()print(author.author_detail.addr)   #这样就获取到了地址 # 查询lqz这个人的地址 反向查询…
Django之模型层第二篇:多表操作 一 表关系回顾 ​ 在讲解MySQL时,我们提到,把应用程序的所有数据都放在一张表里是极不合理的. ​ 比如我们开发一个员工管理系统,在数据库里只创建一张员工信息表,该表有四个字段:工号.姓名.部门名.部门职能描述,此时若公司有1万名员工,但只有3个部门,因为每一名员工后都需要跟着部门信息(部门名.部门职能),所以将会导致部门信息出现大量重复.浪费空间. ​ 解决方法就是将数据存放于不同的表中,然后基于foreign key建立表之间的关联关系. ​ 细说的…
Django之模型层第一篇:单表操作 一 ORM简介 ​ 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql.oracle.Microsoft SQL Server等. ​ 如果应用程序需要操作数据(比如将用户注册信息永久存放起来),那么我们需要在应用程序中编写原生sql语句,然后使用pymysql模块远程操作mysql数据库,详见图1 但是直接编写原生sql语句会存在两方面的…
什么是聚合查询,就是使用聚合函数做计算 from django.db.models import Count,Avg,Max,Min   #聚合函数要从模块中导入 from django.db.models import F,Q   #与或非得 查询需要从模块倒入F和Q 聚合查询 需求 计算所有书的价格from django.db.models import Count,Avg,Max,Min,Sum #聚合函数要从模块中导入ret = models.Book.objects.all().agg…
一.ORM简介       MTV或者MTV框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动. ORM(Object Relation Mapping)是“对象-关系-映射”的简称. 我们先来了解一下ORM扮演了一个什么角色,如上图,我们知道mysql是一个能够操作db/磁盘上数据的软件,python中想要操作磁盘数据时,它想到…
一 表关系回顾 在讲解MySQL时,我们提到,把应用程序的所有数据都放在一张表里是极不合理的. 比如我们开发一个员工管理系统,在数据库里只创建一张员工信息表,该表有四个字段:工号.姓名.部门名.部门职能描述,此时若公司有1万名员工,但只有3个部门,因为每一名员工后都需要跟着部门信息(部门名.部门职能),所以将会导致部门信息出现大量重复.浪费空间. 解决方法就是将数据存放于不同的表中,然后基于foreign key建立表之间的关联关系. 左表 <--------------------------…
一 ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软件,例如mysql.oracle.Microsoft SQL Server等. 如果应用程序需要操作数据(比如将用户注册信息永久存放起来),那么我们需要在应用程序中编写原生sql语句,然后使用pymysql模块远程操作mysql数据库,详见图1 但是直接编写原生sql语句会存在两方面的问题,严重影响开发效率,如下 #1. sql语…
基于对象的跨表查询是子查询 基于双下划线的查询是连表查询 PS:基于双下划线的跨表查询 正向按字段,反向按表名小写 一对一 需求:查询lqz这个人的地址# 正向查询ret = models.Author.objects.filter(name='lqa').values('author_detail__addr') #Author表作为基表,然后从基表中查到人名,然后从Authonr表跨到author_detail表中获取name对应的addr字段ret = models.Author.obje…