Django 데이터베이스 트랜잭션 작업

1456 단어
django에서 모든 단독 이벤트는 하나의 사물로 기본적으로 설정되어 있지만, 다중 테이블 연합 작업을 할 때 모든 테이블 단독save () 가 나타나는 결함이 있습니다.이전 테이블이 성공하면 다음 테이블이 실패하면 문제가 생깁니다. 예를 들어 이체.
트랜잭션 롤백이 필요합니다.
Django의 ORM에서 사무 조작을 사용하려면 먼저 Django의 내장 모듈을 가져와야 한다
from django.db import transaction


먼저 모델 생성
from django.db import models
    
    class Userinfo(models.Model):
        username=models.CharField("   ",max_length=32)
        email=models.EmailField("  ",max_length=32)
    
    class Group(models.Model):
        title=models.CharField("  ",max_length=32)

마이그레이션이 완료되면 뷰 쓰기 시작
 from django.shortcuts import render,HttpResponse
    from . import models
    
    def index(request):
    
        from django.db import transaction
    
        try:
            with transaction.atomic():
                models.Userinfo.objects.create(username="python001",email="[email protected]")
                models.Group.objects.create(title="python002")
    
        except Exception as e:
            return HttpResponse("    ....")
        

여기에save()django가 사물이 성공하는지 자동save()하는지 모니터링할 필요가 없습니다. 다음은 우리가 모델을 조작한 두 번째 문장입니다.
models.Group.objects.create(title="python002")

다음으로 변경:
models.Group.objects.create(add="python002")

데이터베이스에서 이상을 던지고django가 이상을 포착하면 업무가 굴러가는 방법을 사용합니다

좋은 웹페이지 즐겨찾기