当前位置: 首页 > news >正文

第59天:django学习(八)

事务

        事务是MySQL数据库中得一个重要概念,事务的目的:为了保证多个SQL语句执行成功,执行失败,前后保持一致,保证数据安全。

        开启事务的三个关键字

start transaction

commit

rollback

        开启事务

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

常见的字段类型

字段类型描述
AutoFieldint自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。
IntegerField一个整数类型,范围在 -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()实例
BigAutoFieldbigint自增列,必须填入参数 primary_key=True
SmallIntegerField小整数 -32768 ~ 32767
PositiveSmallIntegerField正小整数 0 ~ 32767
BigIntegerField长整型(有符号的) -9223372036854775808 ~ 9223372036854775807
BooleanField布尔值类型 True/False 1/0
TextField文本类型
FileField字符串,路径保存在数据库,文件上传到指定目录

常见的参数

参数描述
upload_to = ""上传文件的保存路径
storage = None存储组件,默认django.core.files.storage.FileSystemStorage
TimeField时间格式 HH:MM[:ss[.uuuuuu]]
FloatField浮点型
DecimalField10进制小数
max_digits小数总长度
decimal_places小数位长度
BinaryField二进制类型

ORM参数

参数描述
null用于表示某个字段可以为空。
unique如果设置为unique=True 则该字段在此表中必须是唯一的 。
db_index如果db_index=True 则代表着为此字段设置索引。
default为该字段设置默认值。
DateFied日期字段,精确到年月日
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删除关联数据,什么也不做
models.PROTECT删除关联数据,引发错误ProtectedError
models.SET_NULL删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)
models.SET_DEFAULT删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)
models.SET删除关联数据,与之关联的值设置为指定值,设置:models.SET(值),与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
db_constraint是否在数据库中创建外键约束,默认为True。

自定义字段

class FixedCharField(models.Field):"""自定义的char类型的字段类"""def __init__(self, max_length, *args, **kwargs):self.max_length = max_lengthsuper(FixedCharField, self).__init__(max_length=max_length, *args, **kwargs)def db_type(self, connection):"""限定生成数据库表的字段类型为char,长度为max_length指定的值"""return 'char(%s)' % self.max_length

http://www.lryc.cn/news/257415.html

相关文章:

  • 举例说明自然语言处理(NLP)技术。
  • echarts地图marker自定义图标并添加点击事件
  • C盘瘦身,C盘清理
  • STM32F103
  • Unity使用打成图集的Sprite作为模型贴图使用的问题
  • el-select赋值对象是对象时,出现赋值与展示不一致问题
  • 在 Node-RED 中引入 ECharts 实现数据可视化
  • docker资源限制
  • 探索HarmonyOS_开发软件安装
  • CSS中控制元素水平布局的七个属性
  • YOLOv8改进 | 2023检测头篇 | 利用AFPN改进检测头适配YOLOv8版(全网独家创新)
  • 测试经理的职责是什么?
  • LinuxBasicsForHackers笔记 -- BASH 脚本
  • 定时任务特辑 | Quartz、xxl-job、elastic-job、Cron四个定时任务框架对比,和Spring Boot集成实战
  • 【面试经典150 | 二叉树】对称二叉树
  • 使用Git进行版本控制
  • 专业课145+总分440+东南大学920考研专业基础综合信号与系统数字电路经验分享
  • Leetcode每日一题
  • USB连接器
  • 软件工程之需求分析
  • URL提示不安全
  • JavaBean是什么
  • 202309-2
  • 数字图像处理(实践篇)二十 人脸特征提取
  • Python自动化:selenium常用方法总结
  • 『开源资讯』JimuReport积木报表 v1.6.6 版本发布—免费报表工具
  • 每天五分钟计算机视觉:使用1*1卷积层来改变输入层的通道数量
  • Java (JDK 21) 调用 OpenCV (4.8.0)
  • git 常用的使用方法
  • 使用Caliper对Fabric地basic链码进行性能测试