事务是MySQL数据库中得一个重要概念
事务的目的:为了保证多个SQL语句执行成功,执行失败,前后保持一致,保证数据安全
它代表了原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
原子性(Atomicity):
事务被视为一个不可分割的原子操作单元。
这意味着要么全部操作成功并永久保存,要么全部操作失败并回滚到事务开始前的状态,不存在部分成功或部分失败的情况。
一致性(Consistency):
事务在执行前后,数据库都必须保持一致状态。
这意味着事务执行前后,数据库中的数据必须满足所有定义的完整性约束,例如列级别的约束、外键关系等。
隔离性(Isolation):
事务之间应该相互隔离,每个事务的执行应该与其他事务的执行相互独立,互不干扰。
隔离性确保了多个事务可以并发执行,而不会产生不一致的结果。
持久性(Durability):
- # 开启事务
- from django.db import transaction
- try:
- with transaction.atomic():
- # SQL1
- # SQL2
- # SQL3
- """写在同一个with语句的代码块都是属于同一个事务,要么同时成功,要么同时失败"""
- except Exception as e:
- print(e) # 记录日志
- transaction.rollback()
字符类型,必须提供max_length参数, max_length表示字符长度。
verbox_name 标识字段的注释
upload_to = ""
upload_to = ""
max_digits,小数总长度
decimal_places,小数位长度
models.CASCADE
a. 与之关联的值设置为指定值,设置:models.SET(值)
b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
db_constraint
是否在数据库中创建外键约束,默认为True。
- OneToOneField(unique):ForeignKey(unqiue=True)
- unique
用于表示某个字段可以为空。
如果设置为unique=True 则该字段在此表中必须是唯一的 。
Foregin(unique = True) ----> OneToOneField
如果db_index=True 则代表着为此字段设置索引。
为该字段设置默认值。
- # 自定义字段(了解)
- 自定义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