ORM이란?
ORM(Object-Relational Mapping)은 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑 해 주는 것을 말한다. 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데잍터베이스는 테이블을 사용하기에 객체 모델과 관계형 모델 간에 불일치가 존재한다. 이때 ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결 해 주는 것이다.
Django는 파이썬 기반으로, 객체 지향 프로그래밍이기 때문에 클래스를 사용한다.
장고 Model
장고는 모델(Model)을 이용해 데이터베이스를 처리한다. 보통 데이터베이스에 데이터를 저장하고 조회하기 위해서 SQL 쿼리문을 이용해야 하지만, 장고의 모델을 사용하면 SQL 쿼리문 없이 데이터를 쉽게 처리할 수 있다.
DB 환경 설정
DB ENGINE
https://github.com/django/django/tree/main/django/db/backends
SQLLite Browser 설치
sqlite3 사용 위함
DB 연동 설정
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '데이터베이스_호스트',
'NAME': '데이터베이스_DB명',
'USER': '데이터베이스_유저',
'PASSWORD': '데이터베이스_암호',
},
}
환경변수를 통한 DB 설정
import os
DATABASES = {
'default': {
'ENGINE': os.environ.get('DB_ENGINE’, 'django.db.backends.mysql'),
'HOST': os.environ['DB_HOST'],
'USER': os.environ['DB_USER'],
'PASSWORD': os.environ['DB_PASSWORD'],
'NAME': os.environ['DB_NAME'],
'PORT': os.environ['DB_PORT'],
},
}
모델 클래스
1) 장고 앱, 프로젝트 생성 > 앱 등록
2) music/models.py 파일에 클래스 입력
모델 필드
필드(field)는 데이터베이스의 테이블에서 열(column)을 의미한다. Django에서 필드는 모델클래스의 속성으로 나타낸다.
class 모델이름(models.Model)
필드이름1 = models.필드타입(필드옵션)
필드이름2 = models.필드타입(필드옵션)
.
.
필드 타입, 필드 옵션
필드 타입과 옵션은 잘 정리되어있는 깃허브가 있어서 공유한다.
관계 설정
데이터가 중복되지 않도록 분리된 모델들의 데이터를 사용할 때는 관계(Relationship) 설정을 통해 연결해서 사용하며 모델간의 관계는 업무 규칙에 따라 설정한다.
모델 관계 종류
- 일대다(1:M) 관계
class ForeignKey(to, on_delete, **options)
to: 일대다 관계에서 1측에 해당하는 모델명 지정
on_delete: 필수옵션, 참조하는 인스턴스가 삭제되었을 때 처리 방식 지정
- 일대일(1:1) 관계
class OneToOneFeild(to, on_delete, **options)
to: 일대일 관계를 갖는 모델명 지정
on_delete: 필수옵션, 참조하는 인스턴스가 삭제되었을 때 처리 방식 지정
- 다대다(N:M) 관계
class ManyToManyField(to, **options)
to: 다대다 관계를 갖는 모델명 지정
모델 매니저(Model Manager)
모델 매니저는 데이터베이스 쿼리와 연동되는 인터페이스로, 각 모들은 애플리케이션에서 최소 하나의 매니저를 가진다. 디폴트 모델 매니저의 이름은 objcts이다.
objects = models.Manager()
Field lookup
Field lookup은 SQL의 WHWRE절에 해당되는 기능으로, filter(), exclude(), get()을 사용할 때 원하는 조건에 맞게 Queryset을 얻을 수 있게 된다. 즉, Field lookup을 사용함으로써 데이터베이스에서 원하는 row만 가져올 수 있게 되는 것이다.
Field lookup의 종류
https://docs.djangoproject.com/en/3.0/ref/models/querysets/#id4
QuerySet
쿼리셋(QuerySet)은 전달받은 모델의 객체 목록이다. 쿼리셋은 데이터베이스로부터 데이터를 읽고, 필터를 걸거나 정렬을 할 수 있다.
https://docs.djangoproject.com/en/4.2/ref/models/querysets/
'web > Django' 카테고리의 다른 글
[Django] 장고 템플릿(Template) (0) | 2024.05.23 |
---|---|
[Django] 장고 모델 관계 이름 (0) | 2024.05.22 |
[Django] 장고 모델 관계 설정 (0) | 2024.05.22 |
[Django] 장고 Model: 모델 생성 - admin 앱에서 데이터 조작(2) (0) | 2024.05.22 |
[Django] 장고 Model: 모델 생성 - 장고쉘에서 데이터 조작(1) (0) | 2024.05.22 |