自我总结47

聚合查询

级联更新 外键字段带来的约束

例子:
书跟出版社是一对多关系 外键字段在书那儿
这个时候如果你把出版社删了 所对应的书也会自动删除
这个时候如果你把出版社主键值改变了 那么书籍表中对应的出版社主键值也会自动修改

聚合函数

关键词 aggregate

聚合函数必须用在分组之后,没有分组其实默认整体就是一组

# 导入模块

from django.db.models import Max, Min, Sum, Avg, Count

# 要跟数据库相关的功能,基本上都在django.db.models里面。如果不在,可能直接在django.db里面

Max Min Sum Avg Count

分组查询

group by 什么时候用? 关键词 ”每“ 例如:每一个部门的平均薪资

关键词 annotate

from django.db.models import Max, Min, Sum, Avg, Count

# django中models后面点什么 就按照什么分组

F和Q查询

from django.db.models import F,Q

F查询

​ 拿到表中字段所对应的数据

例子:查询卖出数大于库存数的书籍

Q查询

​ 能够支持修改多个查询条件的关系

and

or

not

​ filter只能按照and的关系查询数据

filter(Q(title=''),price=)
filter(Q(title='')|Q(title=''))
filter(Q(title='')|Q(title=''))

高级用法

# Q对象的高级用法
q = Q()
q.connector = 'or'  # or关系
q.children.append(('title','xxx'))
q.children.append(('price',666.66))
filter(q)  # 默认是and	

orm字段及参数

字段合集

CharField varchar

IntegerFiled

BigIntegerField

EmailField

DateField

DateTimeField

AutoField

BooleanField

TextField

FileField

DecimalField(Field)

# DateField和DateTimeField

auto_now_add 在创建数据的时候 会将当前时间自动记录 之后不会自动修改  除非你人为修改
auto_now  每次修改数据的时候 都会自动将当前修改时间更新上去  实时更新

外键字段

to_field

字段参数

null

unique

db_index

default

自定义char字段

# 自定义字段类型
		class MyCharField(models.Field):
			def __init__(self,max_length,*args,**kwargs):
				self.max_length = max_length
				# 重新调用父类的方法
				super().__init__(max_length=max_length,*args,**kwargs)


			def db_type(self, connection):
				return 'char(%s)'%self.max_length

orm中的事务操作

事务

转账的例子

四大特性

原子性

一致性

隔离性

持久性

数据库三大范式

第一范式

1、每一列属性都是不可再分的属性值,确保每一列的原子性
2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。



第二范式

每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。



第三范式

数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。像:a-->b-->c  属性之间含有这样的关系,是不符合第三范式的。

比如Student表(学号,姓名,年龄,性别,所在院校,院校地址,院校电话)

这样一个表结构,就存在上述关系。 学号--> 所在院校 --> (院校地址,院校电话)

这样的表结构,我们应该拆开来,如下。

(学号,姓名,年龄,性别,所在院校)--(所在院校,院校地址,院校电话)

django如何开启事务

from django.db import transaction
  
		with transaction.atomic():
			# 在缩进的代码中书写数据库操作
			# 该缩进内的所有代码 都是一个事务
			pass   

posted @ 2019-12-03 04:29  jzm1201  阅读(73)  评论(0编辑  收藏  举报