• day59


    今日内容概要

    • 如何开启事务

    • 介绍常见的字段类型和参数

    • 图书管理系统(页面的形式)

    • MVC和MTV模式

    • 创建多对多表关系的三种方式

    • Ajax的介绍

    • Ajax的案例

    如何开启事务

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

    • 它代表了原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

      • 原子性(Atomicity):

        • 事务被视为一个不可分割的原子操作单元。

        • 这意味着要么全部操作成功并永久保存,要么全部操作失败并回滚到事务开始前的状态,不存在部分成功或部分失败的情况。

      • 一致性(Consistency):

        • 事务在执行前后,数据库都必须保持一致状态。

        • 这意味着事务执行前后,数据库中的数据必须满足所有定义的完整性约束,例如列级别的约束、外键关系等。

      • 隔离性(Isolation):

        • 事务之间应该相互隔离,每个事务的执行应该与其他事务的执行相互独立,互不干扰。

        • 隔离性确保了多个事务可以并发执行,而不会产生不一致的结果。

      • 持久性(Durability):

        • 一旦事务成功提交后,其所做的修改将永久保存在数据库中,即使发生系统故障或重启,数据也能够恢复到提交后的状态。
        • 持久性通过将事务日志写入非易失性存储介质来实现,如硬盘驱动器或固态硬盘

    django中如何开启事务

    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('执行其他操作')

    常用的字段类型及参数

    AutoField
    int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列

    InterField
    一个整数类型,范围在 -2147483648 to 2147483647。

    CharField
    自负类型,必须提供max_length参数,max_length表示字符长度

    DateField
    日期字段,日期格式 YYYY-MM-DD,相当于Python中的datetime.date()实例

    DateTimeField
    日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime()实例

    BigAutoField(AutoField)
    bigint自增列,必须填入参数 primary_key=True

    SmallIntegerField(IntegerField):
    小整数 -32768~32767

    PositivesSmallIntegerField(PositiveIntegerRelDbTypeMixin,IntegerField)
    正小整数 0~32767

    BigIntegerField(IntegerField):
    长整数(有符号的)-9223372036854775808 ~ 9223372036854775807

    BooleanField(Field)
    布尔值类型   True/False  1/0

    name varchar(1024)
    content text;

    TextField(Field)
    文本类型

    FileField(Field)
    字符串,路径保存在数据库,文件上传到指定目录
    参数:upload_to = ""      上传文件的保存路径
               storage = None      存储组件,默认django.core.files.storage.FileSystemStorage

     ImageField(FileField)
    - 字符串,路径保存在数据库,文件上传到指定目录
    - 参数:upload_to = ""      上传文件的保存路径
                 storage = None      存储组件,默认django.core.files.storage.FileSystemStorage

    TimeField(DateTimeCheckMixin, Field)
    - 时间格式      HH:MM[:ss[.uuuuuu]] 

    FloatField(Field)
    - 浮点型 

    DecimalField(Field)
    - 10进制小数
    - 参数:max_digits,小数总长度
                 decimal_places,小数位长度 

    BinaryField(Field)
    - 二进制类型 

    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,每次更新数据记录的时候会更新该字段。

     

     关系字段

    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(unqiue=True)
    unique

    """谁在什么时间评论了什么内容"""
    # 根评论
    # 子评论:评论评论的评论
    PHP是世界上最好的语言    # 跟
        Python是世界上最好的语言  # 子
            java才是  # 子

     无限极分类

    pid

    models.Foreign(to='cate')  # 自己关联自己
    models.Foreign(to='self')  # 自己关联自己  自关联

    自定义字段(了解)
    自定义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

  • 相关阅读:
    竞赛选题 深度学习火车票识别系统
    Mysql面试题汇总
    配置neo4j bolt+s ssl
    模电专题-PN结
    JS创建对象的十种方式
    [SQL] IF
    营业利润里首次突破两位数,瑞幸能否延续神话?
    10最佳iPhone数据恢复软件评论
    在CentOS 7.7 x86_64上为python 2.7.5安装pip的靠谱方法
    混沌学院-亚朵酒店案例-观后随心谈
  • 原文地址:https://blog.csdn.net/qq_67257222/article/details/134463383