前言
事务是MySQL数据库中得一个重要概念
事务的目的:为了保证多个SQL语句执行成功,执行失败,前后保持一致,保证数据安全
ACID属性:
A:
C:
I:
D:
事务的隔离级别 # 数据库很重要------》数据库-----》前端-----》vue、js 冒泡等
DBA:运维的范畴
- from django.db import transaction
- try:
- with transaction.atomic():
- # SQL1
- # SQL2
- # SQL3
- """写在同一个with语句的代码块都是属于同一个事务,要么同时成功,要么同时失败"""
- except Exception as e:
- print(e) # 记录日志
- transaction.rollback()
- AutoField
- int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。
-
- IntegerField
- 一个整数类型,范围在 -2147483648 to 2147483647。
-
- CharField
- 字符类型,必须提供max_length参数, max_length表示字符长度。
-
- DateField
- 日期字段,日期格式 YYYY-MM-DD,相当于Python中的datetime.date()实例。
- DateTimeField
- 日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime()实例
-
- BigAutoField(AutoField)
- - bigint自增列,必须填入参数 primary_key=True
-
- SmallIntegerField(IntegerField):
- - 小整数 -32768 ~ 32767
-
- PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
- - 正小整数 0 ~ 32767
-
- BigIntegerField(IntegerField):
- - 长整型(有符号的) -9223372036854775808 ~ 9223372036854775807
-
- BooleanField(Field)
- - 布尔值类型
- True/False 1/0
-
- name varchar(1024)
- content text;
-
- TextField(Field)
- - 文本类型
-
- FileField(Field)
- - 字符串,路径保存在数据库,文件上传到指定目录
- - 参数:
- upload_to = "" 上传文件的保存路径
- storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
-
- ImageField(FileField)
- - 字符串,路径保存在数据库,文件上传到指定目录
- - 参数:
- upload_to = "" 上传文件的保存路径
- storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
-
- TimeField(DateTimeCheckMixin, Field)
- - 时间格式 HH:MM[:ss[.uuuuuu]]
-
- FloatField(Field)
- - 浮点型
-
- DecimalField(Field)
- - 10进制小数
- - 参数:
- max_digits,小数总长度
- decimal_places,小数位长度
-
- BinaryField(Field)
- - 二进制类型
#### null
用于表示某个字段可以为空。
#### **unique**
如果设置为unique=True 则该字段在此表中必须是唯一的 。
#### **db_index**
如果db_index=True 则代表着为此字段设置索引。
#### **default**
为该字段设置默认值。
### DateField和DateTimeField
#### auto_now_add
配置auto_now_add=True,创建数据记录的时候会把当前时间添加到数据库。
#### auto_now
配置上auto_now=True,每次更新数据记录的时候会更新该字段。
- ForeignKey
-
- to
- 设置要关联的表
- to_field
- 设置要关联的表的字段
-
- related_name
- 反向操作时,使用的字段名,用于代替原反向查询时的’表名_set’。
-
- on_delete
- 当删除关联表中的数据时,当前表与其关联的行的行为。
- models.CASCADE
- 删除关联数据,与之关联也删除
-
- models.DO_NOTHING
- 删除关联数据,引发错误IntegrityError
-
- models.PROTECT
- 删除关联数据,引发错误ProtectedError
-
- models.SET_NULL
- 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)
-
- models.SET_DEFAULT
- 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)
-
- models.SET
- 删除关联数据,
- a. 与之关联的值设置为指定值,设置:models.SET(值)
- b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
-
- db_constraint
- 是否在数据库中创建外键约束,默认为True。
-
- OneToOneField(unique):ForeignKey(unqiue=True)
- unique
-
- """谁在什么时间评论了什么内容"""
- # 根评论
- # 子评论:评论评论的评论
- PHP是世界上最好的语言 # 跟
- Python是世界上最好的语言 # 子
- java才是 # 子
-
- id content create_time user_id pid
- 1 '' '' '' 0
- 2 '' '' '' 1
- 3 '' '' '' 2
- 4
-
- 无限极分类:cate
- id name pid
- 1 家用电器1 0
- 2 家用电器2 0
- 3 家用电器3 0
- 4 家用电器4 0
- 5 家用电器5 0
- 5 冰箱 1
- 6 洗衣机 1
- 7 空调 1
- 8 电脑配件 3
-
- models.Foreign(to='cate') # 自己关联自己
- models.Foreign(to='self') # 自己关联自己 自关联
-
-
- 省市下拉框
- city
- id name pid
- 1 上海 0
- 2 北京 0
- 3 河南 0
- 4 广东 0
- 5 浦东 1
- 5 浦东 1
- 5 浦东 1
- 5 浦东 1
- 5 朝阳 2
- 5 朝阳 2
- 5 朝阳 2
- 5 朝阳 2
- 5 朝阳 2
-
-
- # 自定义字段(了解)
- 自定义char类型字段:
- class FixedCharField(models.Field):
- """
- 自定义的char类型的字段类
- """
-
- def __init__(self, max_length, *args, **kwargs):
- self.max_length = max_length
- super(FixedCharField, self).__init__(max_length=max_length, *args, **kwargs)
-
- def db_type(self, connection):
- """
- 限定生成数据库表的字段类型为char,长度为max_length指定的值
- """
- return 'char(%s)' % self.max_length