• Django知识


    目录

    一.如何开启事务

    1.ACID是数据库事务的四个关键特性

    2.如何开启事务

    二.常见的字段类型和参数

    1.常见的关系字段

    2.ORM字段参数

    3.关系字段


    一.如何开启事务

    1.ACID是数据库事务的四个关键特性

    • 它代表了原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)
      • 原子性(Atomicity):
        • 事务被视为一个不可分割的原子操作单元
        • 这意味着要么全部操作成功并永久保存,要么全部失败并回滚到事务之前的状态,不存在部分成功或部分失败的情况
      • 一致性(Consistency):
        • 事务在执行前后,数据库必须保持一致状态
        • 这意味着事务执行前后,数据库中的数据必须满足所有定义的完整性约束,例如列级别的约束,外键关系等
      • 隔离性(Isolation):
        • 事务之间应该相互隔离,每个事务的执行应该与其他事务的执行相互独立,互不干扰
        • 隔离性确保了多个事务可以并发执行,而不会产生不一致的结果
      • 持久性(Durability):
        • 一旦事务成功提交后,其所做的修改将永久保存在数据库中,即使发生系统故障或重启,数据也能够恢复到提交后的状态
        • 持久性通过将事务日志写入非易失性存储介质来实现,如硬盘驱动器或固态硬盘

    2.如何开启事务

    1. from django.db import transaction
    2. try:
    3. with transaction.atomic():
    4. # sql 1
    5. # sql 2
    6. # 在with代码块内书写所有的orm操作
    7. # 这些操作都属于同一个事务
    8. except Exception as e:
    9. print(e)
    10. print('执行其他操作')

    二.常见的字段类型和参数

    1.常见的关系字段

    1. AutoField
    2. # int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。
    3. IntegerField
    4. # 一个整数类型,范围在 -2147483648 to 2147483647。
    5. CharField
    6. # 字符类型,必须提供max_length参数, max_length表示字符长度。
    7. DateField
    8. # 日期字段,日期格式 YYYY-MM-DD,相当于Python中的datetime.date()实例。
    9. DateTimeField
    10. # 日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime()实例
    11. BigAutoField(AutoField)
    12. # - bigint自增列,必须填入参数 primary_key=True
    13. SmallIntegerField(IntegerField):
    14. # - 小整数 -32768 ~ 32767
    15. PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
    16. # - 正小整数 0 ~ 32767
    17. BigIntegerField(IntegerField):
    18. # - 长整型(有符号的) -9223372036854775808 ~ 9223372036854775807
    19. BooleanField(Field)
    20. # - 布尔值类型
    21. True/False 1/0
    22. name varchar(1024)
    23. content text;
    24. TextField(Field)
    25. # - 文本类型
    26. FileField(Field)
    27. # - 字符串,路径保存在数据库,文件上传到指定目录
    28. '''- 参数:
    29. upload_to = "" 上传文件的保存路径
    30. storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
    31. '''
    32. ImageField(FileField)
    33. # - 字符串,路径保存在数据库,文件上传到指定目录
    34. '''
    35. - 参数:
    36. upload_to = "" 上传文件的保存路径
    37. storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
    38. '''
    39. TimeField(DateTimeCheckMixin, Field)
    40. # - 时间格式 HH:MM[:ss[.uuuuuu]]
    41. FloatField(Field)
    42. # - 浮点型
    43. DecimalField(Field)
    44. # - 10进制小数
    45. '''
    46. - 参数:
    47. max_digits,小数总长度
    48. decimal_places,小数位长度
    49. '''
    50. BinaryField(Field)
    51. # - 二进制类型

    2.ORM字段参数

    1. null
    2. # 用于表示某个字段可以为空。
    3. **unique**
    4. # 如果设置为unique=True 则该字段在此表中必须是唯一的 。
    5. **db_index**
    6. # 如果db_index=True 则代表着为此字段设置索引。
    7. **default**
    8. # 为该字段设置默认值。
    9. DateField和DateTimeField
    10. auto_now_add
    11. # 配置auto_now_add=True,创建数据记录的时候会把当前时间添加到数据库。
    12. auto_now
    13. # 配置上auto_now=True,每次更新数据记录的时候会更新该字段。

    3.关系字段

    1. ForeignKey
    2. to
    3. # 设置要关联的表
    4. to_field
    5. # 设置要关联的表的字段
    6. related_name
    7. # 反向操作时,使用的字段名,用于代替原反向查询时的’表名_set’。
    8. on_delete
    9. # 当删除关联表中的数据时,当前表与其关联的行的行为。
    10. models.CASCADE
    11. # 删除关联数据,与之关联也删除
    12. models.DO_NOTHING
    13. # 删除关联数据,引发错误IntegrityError
    14. models.PROTECT
    15. # 删除关联数据,引发错误ProtectedError
    16. models.SET_NULL
    17. # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)
    18. models.SET_DEFAULT
    19. # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)
    20. models.SET
    21. # 删除关联数据,
    22. a. 与之关联的值设置为指定值,设置:models.SET(值)
    23. b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
    24. db_constraint
    25. # 是否在数据库中创建外键约束,默认为True。
    26. OneToOneField(unique):ForeignKey(unqiue=True)
    27. unique

  • 相关阅读:
    Web基础 - JavaScript
    第6章 - 多无人车系统的协同控制 --> 多无人车系统建模
    Linux Traefik工具Dashboard结合内网穿透实现远程访问
    【从零开始的Java开发】2-8-2 CSS入门:CSS选择器、样式
    深度学习笔记之线性代数
    12种绝佳买入形态k线图(下)
    PHP全功能微信投票迷你平台系统小程序源码
    深入理解Spring中的Ioc
    word 页眉 页脚 页码 分页符 目录
    操作系统面试集锦
  • 原文地址:https://blog.csdn.net/qq_65852978/article/details/134463072