Django ORM 활용법
Django ORM(Object-Relational Mapping)은 Django 프레임워크에서 데이터베이스를 쉽게 다룰 수 있도록 도와주는 기능임.
SQL을 직접 작성하지 않고도 Python 코드로 데이터베이스를 조작할 수 있어 효율적임.
1. 데이터 필터링 (Filtering Data)
데이터베이스에서 특정 조건에 맞는 데이터를 필터링하는 방법.
# 특정 조건으로 데이터 필터링
from myapp.models import MyModel
# 예: name 필드가 'Alice'인 데이터 필터링
filtered_data = MyModel.objects.filter(name='Alice')
filter()
메서드를 사용해 특정 조건에 맞는 데이터를 조회함. 여러 조건을 결합하여 사용할 수도 있음.
2. 논리 연산자 (Logical Operator)
복수의 조건을 조합하여 데이터를 필터링할 때 논리 연산자를 사용함.
from django.db.models import Q
# 예: name이 'Alice' 또는 age가 25인 데이터 필터링
filtered_data = MyModel.objects.filter(Q(name='Alice') | Q(age=25))
Q
객체를 사용하여 AND
, OR
조건을 쉽게 결합할 수 있음.
3. 선택적 컬럼 조회 (Selective Columns)
필요한 컬럼만 선택적으로 조회하여 데이터베이스 접근 속도를 높일 수 있음.
# 예: name과 age 컬럼만 조회
data = MyModel.objects.values('name', 'age')
values()
또는 only()
메서드를 사용하여 필요한 컬럼만 가져올 수 있음.
4. 집계 함수 (Aggregate Function)
데이터베이스의 집계 함수 (예: 합계, 평균, 최대값)를 사용할 수 있음.
from django.db.models import Sum, Avg, Max
# 예: age 필드의 합계, 평균, 최대값 구하기
age_summary = MyModel.objects.aggregate(Sum('age'), Avg('age'), Max('age'))
aggregate()
메서드로 다양한 집계 함수를 적용 가능함.
5. 데이터 생성 (Create)
새로운 데이터를 데이터베이스에 저장하는 방법.
# 예: 새로운 레코드 생성
new_record = MyModel.objects.create(name='Alice', age=25)
create()
메서드를 사용하여 데이터를 간편하게 생성할 수 있음.
6. 대량 데이터 생성 (Bulk Create)
대량의 데이터를 한번에 저장할 때 유용함.
# 예: 여러 레코드 한 번에 생성
bulk_data = [
MyModel(name='Alice', age=25),
MyModel(name='Bob', age=30)
]
MyModel.objects.bulk_create(bulk_data)
bulk_create()
메서드는 다수의 데이터를 효율적으로 저장함.
7. 데이터 업데이트 (Update)
기존 데이터의 값을 변경하는 방법.
# 예: name이 'Alice'인 레코드의 age 업데이트
MyModel.objects.filter(name='Alice').update(age=26)
update()
메서드를 사용하여 특정 조건에 맞는 데이터를 업데이트할 수 있음.
8. 데이터 삭제 (Delete)
특정 데이터를 삭제하는 방법.
# 예: name이 'Alice'인 레코드 삭제
MyModel.objects.filter(name='Alice').delete()
delete()
메서드를 사용해 조건에 맞는 데이터를 삭제함.
9. 데이터 정렬 (Order By)
데이터를 특정 기준으로 정렬하여 조회할 수 있음.
# 예: age 기준으로 오름차순 정렬
sorted_data = MyModel.objects.order_by('age')
# 내림차순 정렬
sorted_data_desc = MyModel.objects.order_by('-age')
order_by()
메서드를 사용해 원하는 컬럼 기준으로 데이터를 정렬 가능함.
Django ORM은 이처럼 다양한 기능을 제공하여 데이터베이스를 효율적으로 관리할 수 있음. 각 메서드와 기능을 조합하여 더욱 복잡한 쿼리도 작성 가능함.
'파이썬(python) > Django' 카테고리의 다른 글
[Django] DTL(Django Template Library) (0) | 2024.11.07 |
---|
배움에 즐거움을 느끼는 마네의 데이터랩 이미지 출처 : https://www.instagram.com/hoseobiiiiiii._.0410/
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!