zoukankan      html  css  js  c++  java
  • 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("执行成功")
  • 相关阅读:
    FZU-2087 统计树边(最小生成树)
    HDU-1599 find the mincost route(floyd求最小环)
    BZOJ-1191 [HNOI2006]超级英雄Hero(二分图匹配)
    FZU-2020 组合(Lucas定理)
    FZU-2232 炉石传说(二分图匹配)
    NOIP2016模拟 拼接mf(模拟)
    2016年11月10日00:26:08
    BZOJ2986 Non-Squarefree Numbers
    BZOJ3624 [Apio2008]免费道路
    BZOJ3224 Tyvj 1728 普通平衡树
  • 原文地址:https://www.cnblogs.com/chvv/p/10081094.html
Copyright © 2011-2022 走看看