Django Web Framework/Django 일반
django에서 db row lock을 실행할 수 있는 방법
- DB 행(lock)은 여러 클라이언트가 동시에 동일한 데이터를 수정하는 것을 방지하기 위해 사용됩니다.
- Django에서 DB 행(lock)을 실행하는 방법은 크게 두 가지입니다:
1. select_for_update() 메서드 사용:
- select_for_update() 메서드는 Django ORM에서 제공하는 메서드로, 특정 쿼리에 대해 행(lock)을 설정할 수 있습니다.
- 해당 메서드를 사용하여 특정 행을 선택하고, 다른 트랜잭션이 해당 행을 수정하는 것을 막을 수 있습니다.
- 다음은 select_for_update() 메서드의 예시입니다:
from django.db import transaction
with transaction.atomic():
# 특정 행을 선택하여 lock을 설정
locked_row = MyModel.objects.select_for_update().get(id=1)
# lock이 설정된 행에 대한 수정 작업 수행
locked_row.field = 'new value'
locked_row.save()
2. 트랜잭션 사용:
- Django에서 제공하는 트랜잭션을 사용하여 DB 행(lock)을 설정할 수 있습니다.
- transaction.atomic() 데코레이터나 transaction.atomic() 컨텍스트 매니저를 사용하여 트랜잭션 범위를 설정하고, 해당 범위 내에서 특정 행을 선택하고 수정 작업을 수행할 수 있습니다.
- 다음은 트랜잭션을 사용하여 DB 행(lock)을 설정하는 예시입니다:
from django.db import transaction
with transaction.atomic():
# 특정 행을 선택하여 lock을 설정
locked_row = MyModel.objects.select_for_update().get(id=1)
# lock이 설정된 행에 대한 수정 작업 수행
locked_row.field = 'new value'
locked_row.save()
'Django Web Framework > Django 일반' 카테고리의 다른 글
CSRF 에 대한 custom error view 만들기 (0) | 2024.03.26 |
---|---|
웹 애플리케이션의 성능 지표 및 측정 (측정 도구) (0) | 2024.02.01 |
Django migrate 잘 쓰기 위한 정리 노트 (0) | 2023.12.15 |
allauth를 사용해 production 등록을 할 때 400 error가 발생하는 경우 (0) | 2023.08.09 |
django template cache 사용방법 (MPTT 적용) (0) | 2023.03.17 |
댓글