django中的事务

客户A要给客户B转一笔钱,这个在数据库中需要进行两步: 1.客户A减钱  2.客户B加钱

如果在第一步结束后,服务器出现异常,停下了,第二步没有进行,如果数据库使用了事务操作,真的出现异常的时候,前面的操作会进行回滚。

简单的说就是:要么全部执行成功,要么一个都不执行

这个回滚的操作就叫做数据库的原子性操作。

这是在MySQL数据库中,我们在Django的ORM中如何进行呢?


2.通过ORM创建生成表 from django.db import models class UserInfo(models.Model): username = models.CharField("用户",max_length=32) balance = models.CharField("余额",max_length=32) 注意啊:踩过的坑,涉及金融计算,涉及小数啊,要求特别精确的,我们用字符串存储。 如果是金融计算的话,我们用一个decimal来进行计算。 3.我们给数据库加两条数据,用来模拟两个用户之间的转账 from django.shortcuts import render,HttpResponse from app01 import models from django.db import transaction from django.db.models import F def index(request): try: with transaction.atomic(): models.UserInfo.object.filter(id=1).update(balance=F("balance")-100) models.UserInfo.object.filter(id=2).update(balance=F("balance")+100) except Exception as e: return HttpResponse("出现错误<%s>"%str(e)) return HttpResponse("执行成功")

 

转载于:https://www.cnblogs.com/chvv/p/10081094.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值