事务的开启
导入transaction
装饰函数或者方法
from django.db import transaction
@transaction.atomic
def test(request):
pass
保存点操作
设置保存点,设置后会得到一个标记
save_tag1 = transaction.savepoint()
数据的回退,根据保存点的标记进行数据的回退
transaction.savepoint_rollback(save_tag1)
提交保存点到当前位置的数据,从保存点到该命令处,数据提交,数据修改生效
transaction.savepoint_commit(save_tag1)
悲观锁
查询时上悲观锁
模型类.objects.select_for_update().get(条件)
乐观锁
事实上并不是锁
实际上是在查询的时加上限定条件,只有同时满足时,才算查询成功
并可对查询的结果进行处理
res = Goodsgoods.objects.filter(stock=origin_stock,id=goods_id).update(stock=new_stock,sales=new_sales)
print(res)
if res == 0:
if i == 2:
# 回滚
transaction.savepoint_rollback(sid)
return JsonResponse({'res':5,'errmsg':'下单失败'})
continue
else:
break
————————————————
版权声明:本文为CSDN博主「躬耕于数」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36012543/article/details/79679690