Django学习日志08

如何开启事务

事务的目的:为了保证多个SQL语句执行成功,执行失败,前后保持一致,保证数据安全

ACID属性:
A:原子性(Atomicity):指事务是原子的,对事务中的操作要么全部成功,要么全部失败。例如,如果一次购物过程中有两个购买操作,一个操作成功,另一个失败,那么购物过程会被取消,购物车会回滚,以保证原子性不受影响。
C:一致性(Consistency):指操作后的数据库从一个一致状态转化为另一个一致状态。例如,如果某用户时区变化,数据库中记录的时间也会随之变化,以保证一致性。
I:隔离性(Isolation):指数据库中正在执行的事务,看不到其他事务的活动。例如,如果两个客户同时向一个银行账户汇款,银行会先锁定该账户并处理一个请求,再锁定该账户并处理另一个请求,以保证隔离性。
D:持久性(Durability):指一个提交的事务,对数据库中的数据修改是永久有效的。例如,一次交易提交时,数据库中的数据对所有客户端是可见的,以保证持久性。

start transaction;
commit;
rollback;

开启事务

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

常见的ORM字段类型

AutoField
int自增列,必须填入参数 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()实例

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

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

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

关系字段

ForeignKey

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 

无限极分类

 

 

自定义字段

自定义char类型字段

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.mzph.cn/news/151025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数据可视化之matplotlib.pyplot

文章目录 模块引用折线条图实际应用案例关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 不论是数据挖掘还是数据…

Hadoop-- hdfs

1、HDFS中的三个进程:NameNode(NN)、DataNode(DN)、SecondNameNode(SNN) 2、NameNode(NN) 1、作用: 1、接收客户端的一个读、写的服务,在namenode上存储了数据文件和datanode的映射的关系。 …

移动云电脑:摆脱传统桎梏,助推企业数字化转型

如今,随着“云”在企业数字化转型战略中的作用日益凸显,上云是企业数字化转型第一步,已成为业界共识。尤其对于中小企业而言,数字化转型更是一种生存之道。 实际上,企业数字化转型面临很多传统桎梏。例如,数…

企业数字化转型的好处?_光点科技

企业数字化转型是当今商业世界中一个至关重要的议题。数字化转型不仅仅意味着采用新技术,而是涉及到企业在文化、运营和客户体验方面的根本变革。那么,企业数字化转型的好处是什么呢? 1.数字化转型可以显著提高企业的运营效率。 通过自动化流…

java-jdbc快速入门

文章目录 简介快速入门 简介 JDBC就是使用Java语言操作关系数据库的一套APIJava DataBase Connectivity 快速入门 -- mysql 中准备工作 create database if not exists my_db; use my_db; create table account(id int,name varchar(20),money int ); insert into account v…

深度学习之基于YoloV5血红细胞检测识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 深度学习已经在许多领域中得到了广泛的应用,包括医疗健康领域。其中,YOLO(You O…

Python实现WOA智能鲸鱼优化算法优化随机森林回归模型(RandomForestRegressor算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 鲸鱼优化算法 (whale optimization algorithm,WOA)是 2016 年由澳大利亚格里菲斯大学的Mirjalili 等提…

国学---佛系算吉凶~

佛系算吉凶咯~,正经走访深山庙宇,前辈老人,经过调研后,搭建的轻衍计算模型,团队对国学的初次信息化尝试。 共享给有需要的朋友,准不准没关系,开心最重要。 后续还有财富,事业&…

2020年12月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 角色初始位置坐标是(0,0),执行下面程序后,角色会出现在什么位置上? A:x坐标为10,y坐标为50 B:x坐标为40,y坐标为50 C:x坐标为50,y坐标为40 D:x坐标为30,y坐标为50 答案…

解决Kibana初始化失败报错: Unable to connect to Elasticsearch

现象: 原因: docker run生成容器的时候,指定elastic server时指向了localhost 为什么不能是localhost, 因为这个localhost指向的是容器本身的网络,而elastic用的是物理网络,两个网络是隔离的,所以如果kiba…

有Mac或无Mac电脑通用的获取安卓公钥的方案

从2023年9月开始,所有上架应用市场的app都需要进行APP备案。 其中后端服务器在阿里云的可以在阿里云备案,后端服务器在腾讯云的可以在腾讯云备案。但无论你是在什么云厂商里做备案,无一例外的是,无论是上架安卓应用还是上架IOS应…

# Apifox前后端开发人员使用场景

Apifox前后端开发人员使用场景 概述 官网:Apifox 快速入门 | Apifox 帮助文档 功能描述 1、在日常编程开发过程中经常使用前后端分离架构的模式,一个项目的落地会通过产品、开发、测试三方会审,对项目需求评审过后,前后端开发会…

【数据结构(二)】双向链表(4)

文章目录 1. 基本概念2. 管理双向链表的思路3. 代码实现 1. 基本概念 管理单向链表的缺点分析: ①单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找。     ②单向链表不能自我删除,需要靠辅助节点 ,而双向…

【献给过去的自己】栈实现计算器(C语言)

背景 记得在刚学C语言时,写了一篇栈实现计算器-CSDN博客文章。偶然间看到了文章的阅读量以及评论,居然有1.7w的展现和多条博友的点评,反馈。 现在回过头来看,的确有许多不严谨的地方,毕竟当时分享文章时,还…

【日常】爬虫技巧进阶:textarea的value修改与提交问题(以智谱清言为例)

序言 记录一个近期困扰了一些时间的问题。 我很喜欢在爬虫中遇到问题,因为这意味着在这个看似简单的事情里还是有很多值得去探索的新东西。其实本身爬虫也是随着前后端技术的不断更新在进步的。 文章目录 序言Preliminary1 问题缘起1.1 Selenium长文本输入阻塞1.2…

激光雕刻机的雕刻操作

今天小编带大家来学习一下在实践当中学习到的基础操作,激光雕刻机的雕刻玻璃操作,欢迎评论指正。 目录 什么是激光雕刻机 怎么操作激光雕刻机操作 打开电源 打开电脑,选择需要的软件 在CAD上进行绘图,绘图完成进行保存 在RD…

Ubuntu 20.04 调整交换分区大小

Ubuntu 调整交换分区大小 一、系统情况二、去除旧的交换分区文件三、配置并启用交换分区四、查看swap文件大小 一、系统情况 Ubuntu :Ubuntu 20.04.6 LTS 交换分区位置: cat /proc/swaps二、去除旧的交换分区文件 去掉旧的交换分区有两个步骤&#x…

广州一母婴店因设置0元购导致关店

我是卢松松,点点上面的头像,欢迎关注我哦! 广州的一家母婴用品网店Minitutu因双十一优惠券设置错误,导致所有商品变成0元购买,引发消费者疯狂抢购,15万多单订单中有800多万元的损失。店家无奈之下只能暂停营…

css animation 动画如何保留动画结束后的状态 animation-fill-mode: forwards

css animation 动画如何保留动画结束后的状态 animation-fill-mode: forwards 一、问题描述 在做一个弹窗动画提示的时候遇到了一个问题: 在动画结束的时候,移除元素时会有闪一下的问题,像这样: 我的动画结尾是这样的&#xff…

LaTex生成引文(参考文献)时出现乱序,想把引文按顺序显示的解决方法

LaTex生成pdf时文献应用会乱序: 引用bib格式的参考文献时,会这么写: \bibliographystyle{plain} \bibliography{%filename%.bib} 而plain的意思是用作者的姓名排序,而不是按照引用顺序, 解决方案: 所以…