zoukankan      html  css  js  c++  java
  • Django事务

    有时数据的更新修改涉及到多张表的更改,但因为某一环节的出错导致关联数据不能同时更新,为了避免这种问题的出现,可以使用事物(transaction)来解决

    Models:

    from django.db import models
    
    class UserInfo(models.Model):
        username = models.CharField(max_length=32)
        email = models.EmailField(max_length=64)
    
    class Dept(models.Model):
        title = models.CharField(max_length=32)

    Urls:

    from django.conf.urls import url
    from app01 import views
    
    urlpatterns = [
        url(r'^test/$', views.test),
    ]

    Views:

    from django.shortcuts import render, HttpResponse
    from . import models
    
    
    def test(request):
        try:
            from django.db import transaction  # 导入事务
            with transaction.atomic():
                user_obj = models.UserInfo.objects.create(username='Lena', email='example@live.com')
                dept_obj = models.Dept.objects.create(title='IT')
        except Exception as e:
            return HttpResponse('error happened, db rollback')
    
        return HttpResponse('OK')

    事务的应用需要数据库引擎的支持——Innodb

    user_obj和dept_obj的创建需要同时完成,其中一个操作行为的出错都不会实现user_obj和dept_obj的创建

  • 相关阅读:
    SQL 数据开发(经典)转贴
    2018学习计划 借鉴
    SQL数据库索引理解与应用【转贴--收藏】
    学生成绩信息表
    网址收录
    导出word文档 通过DocX组件
    Aspose.word
    C#编码规范
    远程连接ORACLE服务
    Request.Form()的使用
  • 原文地址:https://www.cnblogs.com/c491873412/p/7688472.html
Copyright © 2011-2022 走看看