ORM 事务和锁 发表于 2020-03-13 更新于 2022-01-20 分类于 Django ORM 的事务和锁,也即是 MySQL 的事务和锁,为了保证操作的原子性,避免数据库出错。 锁我们可以这样给代码加锁: 1models.Book.objects.select_for_update().filter(id=1) 事务方式 1 全局配置1234567891011DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mxshop', 'HOST': '127.0.0.1', 'PORT': '3306', 'USER': 'root', 'PASSWORD': '123', "ATOMIC_REQUESTS": True, # 全局开启事务,绑定的是http请求响应整个过程当中的sql }} 方式 2 视图函数加装饰器12345from django.db import transaction@transaction.atomicdef viewfunc(request): # This code executes inside a transaction. do_stuff() 方式 3 上下文加装饰器12345678910from django.db import transactiondef viewfunc(request): # This code executes in autocommit mode (Django's default). do_stuff() with transaction.atomic(): # 保存点 # This code executes inside a transaction. do_more_stuff() do_other_stuff()