佛山市南海建设局网站,11号在线 网站开发,做网站找那些公司,女生学前端还是后端如何开启事务
事务的目的#xff1a;为了保证多个SQL语句执行成功#xff0c;执行失败#xff0c;前后保持一致#xff0c;保证数据安全
ACID属性#xff1a; A#xff1a;原子性#xff08;Atomicity#xff09;#xff1a;指事务是原子的#xff0c;对事务中的操…如何开启事务
事务的目的为了保证多个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_keyTrue。当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_keyTrue
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
如果设置为uniqueTrue 则该字段在此表中必须是唯一的 。
db_index
如果db_indexTrue 则代表着为此字段设置索引。
default
为该字段设置默认值。
DateField和DateTimeField
auto_now_add
配置auto_now_addTrue创建数据记录的时候会把当前时间添加到数据库。
auto_now
配置上auto_nowTrue每次更新数据记录的时候会更新该字段。
关系字段
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(unqiueTrue) unique
无限极分类 自定义字段
自定义char类型字段
class FixedCharField(models.Field):自定义的char类型的字段类def __init__(self, max_length, *args, **kwargs):self.max_length max_lengthsuper(FixedCharField, self).__init__(max_lengthmax_length, *args, **kwargs)def db_type(self, connection):限定生成数据库表的字段类型为char长度为max_length指定的值return char(%s) % self.max_length
图书管理系统