• 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
  • 相关阅读:
    探秘URL的奥义:JavaScript中轻松获取页面参数值的N种姿势【含代码示例】
    [机缘参悟-32]:鬼谷子-抵巇[xī]篇-面对危险与问题的五种态度
    Next.js 13 服务器组件和应用目录完整指南
    数据结构与算法之美读书笔记14
    【Android】【Compose】Compose里面的Row和Column的简单使用
    hadoop、hive、DBeaver的环境搭建及使用
    Web基础与HTTP协议
    php组装数据批量插入,比单条循环插入数据快很多
    K8S:Yaml文件详解
    ICLR24大模型提示(1/11) | BadChain:大型语言模型的后门思维链提示
  • 原文地址:https://blog.csdn.net/weixin_66010453/article/details/134464575