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("执行成功")
  • 相关阅读:
    ubuntu 安装(install) pwntcha[一个做"验证码识别"的开源程序]
    MySQL 二进制日志过滤
    MySQL 分区表各个分区的行数
    MySQL 表分区A
    MySQL show binglog event in 'log_name'
    MySQL、You are using safe update mode
    SQL 设计心得、逗号分隔列表
    MYSQL @、@@、@x
    SQL Server
    建设供内网访问的网站
  • 原文地址:https://www.cnblogs.com/chvv/p/10081094.html
Copyright © 2011-2022 走看看