• 11.17 知识总结(事务、常见的字段类型等)


    一、 事务

       1.1 如何开启事务

    前言

    事务是MySQL数据库中得一个重要概念
    事务的目的:为了保证多个SQL语句执行成功,执行失败,前后保持一致,保证数据安全
    ACID属性:
    A:
    C:
    I:
    D:
    事务的隔离级别 # 数据库很重要------》数据库-----》前端-----》vue、js 冒泡等
    DBA:运维的范畴

    1. from django.db import transaction
    2. try:
    3. with transaction.atomic():
    4. # SQL1
    5. # SQL2
    6. # SQL3
    7. """写在同一个with语句的代码块都是属于同一个事务,要么同时成功,要么同时失败"""
    8. except Exception as e:
    9. print(e) # 记录日志
    10. transaction.rollback()

    1.2   常见的字段类型和参数

    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. - 小整数 -3276832767
    15. PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField)
    16. - 正小整数 032767
    17. BigIntegerField(IntegerField):
    18. - 长整型(有符号的) -92233720368547758089223372036854775807
    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. ImageField(FileField)
    32. - 字符串,路径保存在数据库,文件上传到指定目录
    33. - 参数:
    34. upload_to = "" 上传文件的保存路径
    35. storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
    36. TimeField(DateTimeCheckMixin, Field)
    37. - 时间格式 HH:MM[:ss[.uuuuuu]]
    38. FloatField(Field)
    39. - 浮点型
    40. DecimalField(Field)
    41. - 10进制小数
    42. - 参数:
    43. max_digits,小数总长度
    44. decimal_places,小数位长度
    45. BinaryField(Field)
    46. - 二进制类型

    1.3  ORM字段参数

    #### null

    用于表示某个字段可以为空。

    #### **unique**

    如果设置为unique=True 则该字段在此表中必须是唯一的 。

    #### **db_index**

    如果db_index=True 则代表着为此字段设置索引。

    #### **default**

    为该字段设置默认值。

    ###  DateField和DateTimeField

    #### auto_now_add

    配置auto_now_add=True,创建数据记录的时候会把当前时间添加到数据库。

    #### auto_now

    配置上auto_now=True,每次更新数据记录的时候会更新该字段。

    1.4  关系字段

    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
    28. """谁在什么时间评论了什么内容"""
    29. # 根评论
    30. # 子评论:评论评论的评论
    31. PHP是世界上最好的语言 # 跟
    32. Python是世界上最好的语言 # 子
    33. java才是 # 子
    34. id content create_time user_id pid
    35. 1 '' '' '' 0
    36. 2 '' '' '' 1
    37. 3 '' '' '' 2
    38. 4
    39. 无限极分类:cate
    40. id name pid
    41. 1 家用电器1 0
    42. 2 家用电器2 0
    43. 3 家用电器3 0
    44. 4 家用电器4 0
    45. 5 家用电器5 0
    46. 5 冰箱 1
    47. 6 洗衣机 1
    48. 7 空调 1
    49. 8 电脑配件 3
    50. models.Foreign(to='cate') # 自己关联自己
    51. models.Foreign(to='self') # 自己关联自己 自关联
    52. 省市下拉框
    53. city
    54. id name pid
    55. 1 上海 0
    56. 2 北京 0
    57. 3 河南 0
    58. 4 广东 0
    59. 5 浦东 1
    60. 5 浦东 1
    61. 5 浦东 1
    62. 5 浦东 1
    63. 5 朝阳 2
    64. 5 朝阳 2
    65. 5 朝阳 2
    66. 5 朝阳 2
    67. 5 朝阳 2
    68. # 自定义字段(了解)
    69. 自定义char类型字段:
    70. class FixedCharField(models.Field):
    71. """
    72. 自定义的char类型的字段类
    73. """
    74. def __init__(self, max_length, *args, **kwargs):
    75. self.max_length = max_length
    76. super(FixedCharField, self).__init__(max_length=max_length, *args, **kwargs)
    77. def db_type(self, connection):
    78. """
    79. 限定生成数据库表的字段类型为char,长度为max_length指定的值
    80. """
    81. return 'char(%s)' % self.max_length
  • 相关阅读:
    计算方法/数值分析 期末复习整理
    Java设计模式-原型模式
    flink sql clinet 实战:窗口函数----flink-1.13.6
    代码随想录算法训练营15期 Day 3 | 203.移除链表元素 、707.设计链表 、206.反转链表
    Flutter之Json序列化
    看看造车新势力都在哪些方向上发力
    halcon深度学习中的样本增强
    复位的方法
    商用短链平台_第5章_阿里云Linux服务器选配和常用中间件环境安装
    2023年无人航空系统与航空航天国际会议(ICUASA 2023)
  • 原文地址:https://blog.csdn.net/weixin_66010453/article/details/134464575