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的创建

  • 相关阅读:
    json for modern c++(nlohmann json)使用小计
    你到底是如何上网的[转载]
    opencv编译
    二维码解析(编译zxing-cpp)
    otl odbc小计
    解决github clone慢的问题
    网络编程小计
    模板小计
    c++开发遇到的错误和引用配置
    IOCP Input/Output Completion Port IO完成端口
  • 原文地址:https://www.cnblogs.com/c491873412/p/7688472.html
Copyright © 2011-2022 走看看