ftp网站怎么建立,无法使用wordpress,浏网站建设补贴,怎么做外网网站监控软件【十二】Django中如何开启事务 事务是MySQL数据库中得一个重要概念 事务的目的#xff1a;为了保证多个SQL语句执行成功#xff0c;执行失败#xff0c;前后保持一致#xff0c;保证数据安全 【1】ACID是数据库事务的四个关键特性 它代表了原子性(Atomicity)、…【十二】Django中如何开启事务 事务是MySQL数据库中得一个重要概念 事务的目的为了保证多个SQL语句执行成功执行失败前后保持一致保证数据安全 【1】ACID是数据库事务的四个关键特性 它代表了原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。 原子性(Atomicity) 事务被视为一个不可分割的原子操作单元。 这意味着要么全部操作成功并永久保存要么全部操作失败并回滚到事务开始前的状态不存在部分成功或部分失败的情况。 一致性(Consistency) 事务在执行前后数据库都必须保持一致状态。 这意味着事务执行前后数据库中的数据必须满足所有定义的完整性约束例如列级别的约束、外键关系等。 隔离性(Isolation) 事务之间应该相互隔离每个事务的执行应该与其他事务的执行相互独立互不干扰。 隔离性确保了多个事务可以并发执行而不会产生不一致的结果。 持久性(Durability) 一旦事务成功提交后其所做的修改将永久保存在数据库中即使发生系统故障或重启数据也能够恢复到提交后的状态。持久性通过将事务日志写入非易失性存储介质来实现如硬盘驱动器或固态硬盘。
【2】Django中如何开启事务
# 开启事务from django.db import transactiontry:with transaction.atomic():# SQL1# SQL2# SQL3写在同一个with语句的代码块都是属于同一个事务要么同时成功要么同时失败except Exception as e:print(e) # 记录日志transaction.rollback()
【十三】ORM中常用的字段及参数
AutoField
int自增列必须填入参数 primary_keyTrue。当model中如果没有自增列则自动会创建一个列名为id的列。
IntegerField
一个整数类型范围在 -2147483648 to 2147483647。(一般不用它来存手机号(位数也不够)直接用字符串存)
BigIntegerField(IntegerField)
长整型(有符号的)范围在 -9223372036854775808 9223372036854775807
CharField 字符类型必须提供max_length参数 max_length表示字符长度。 verbox_name 标识字段的注释
EmailField(CharField)
varchar(254)
DecimalField(Field)
max_digits小数总长度decimal_places小数位长度
TextField(Field)
文本类型支持大段内容无字数限制
FileField(Field)
字符串路径保存在数据库文件上传到指定目录参数 upload_to upload_to 上传文件的保存路径 storage None 存储组件默认django.core.files.storage.FileSystemStorage
ImageField(FileField)
字符串路径保存在数据库文件上传到指定目录参数 upload_to upload_to 上传文件的保存路径 storage None 存储组件默认django.core.files.storage.FileSystemStorage
DecimalField(Field)
10进制小数参数 max_digits小数总长度decimal_places小数位长度
BooleanField(Field)
字段为布尔值数据库里面可以存 0/1
TimeField(DateTimeCheckMixin, Field)
时间格式 HH:MM[:ss[.uuuuuu]]
FloatField(Field)
浮点型
BinaryField(Field)
二进制类型
DateField
日期字段日期格式 YYYY-MM-DD相当于Python中的datetime.date()实例。
DateTimeField
日期时间字段格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]相当于Python中的datetime.datetime()实例。 BigAutoField(AutoField)
bigint自增列必须填入参数 primary_keyTrue
SmallIntegerField(IntegerField):
小整数 -32768 32767
PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
正小整数 0 32767
BigIntegerField(IntegerField):
长整型(有符号的) -9223372036854775808 9223372036854775807
【关系字段】
ForeignKey
外键类型在ORM中用来表示外键关联关系一般把ForeignKey字段设置在 一对多中多的一方。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(unqiueTrue)
unique
OneToOneField
一对一字段。通常一对一字段用来扩展已有字段。(通俗的说就是一个人的所有信息不是放在一张表里面的简单的信息一张表隐私的信息另一张表之间通过一对一外键关联)
to
设置要关联的表。
to_field
设置要关联的字段。
on_delete
当删除关联表中的数据时当前表与其关联的行的行为。(参考上面的例子)
【字段参数】
null
用于表示某个字段可以为空。
unique
如果设置为uniqueTrue 则该字段在此表中必须是唯一的 。
Foregin(unique True) ---- OneToOneField
db_index
如果db_indexTrue 则代表着为此字段设置索引。
default
为该字段设置默认值。
DateField和DateTimeField
auto_now_add
配置auto_now_addTrue创建数据记录的时候会把当前时间添加到数据库。
auto_now
配置上auto_nowTrue每次更新数据记录的时候会更新该字段。 【支持自定义字段】
# 自定义字段了解
自定义char类型字段
class FixedCharField(models.Field):自定义的char类型的字段类def __init__(self, max_length, *args, **kwargs):self.max_length max_lengthsuper(FixedCharField, self).__init__(max_lengthmax_length, *args, **kwargs)def db_type(self, connection):限定生成数据库表的字段类型为char长度为max_length指定的值return char(%s) % self.max_length