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

  • 相关阅读:
    android 模拟点击事件
    IGZO显示屏
    java 代码混淆
    android 模拟点击3
    android 文件读写
    android 抓包 tcpdump
    pathon 2
    conversion to dalvik format failed with error 1
    zipalign
    android 来电状态
  • 原文地址:https://www.cnblogs.com/c491873412/p/7688472.html
Copyright © 2020-2023  润新知