- 객체(Object)와 관계형 데이터베이스의 데이터를 매핑해주는 과정을 의미한다.
- 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 SQL 쿼리문 없이도 데이터베이스의 데이터들을 다룰 수 있다.
Django의 model은 ORM 역할을 한다. 즉, SQL을 직접 작성하지 않아도 model을 통해 데이터 베이스로 접근이 가능하다.
그래서 이번에는 ORM을 이용해서 데이터를 다루는 방법을 알아보았다. 여기에서 내가 개발할 때 사용한 데이터 모델은 Template이라는 모델이다.
upload_files(파일 저장 경로), name(파일명), description(파일 설명), uploaded_at(파일 업로드 일자), id (파일 인덱스)
class Template(models.Model):
upload_files = models.FileField(blank=False, null=False)
name = models.CharField(max_length = 50)
description = models.CharField(max_length=200)
uploaded_at = models.DateTimeField(auto_now_add=True)
id = models.AutoField(primary_key=True)
class Meta:
# table name
db_table = 'Templates_info'
Template.objects.all()
Template.objects.get(id=1)
>>> template = Tempalte()
>>> template.name = 'openstack instance'
>>> template.description = 'test'
.....
>>> template.save()
>>> d = Tempalte.objects.get(name='openstack instance')
>>> d.delete()
ORM은 REST API를 개발하는 데 아주 유용했다. 복잡한 SQL 쿼리를 사용하지 않고도 데이터를 관리하는 것이 가장 큰 장점이였다.
하지만 ORM에 너무 의존하면 안될 것 같다. 자칫하다간 SQL 쿼리문과 DB에 대한 공부를 소홀히 할 수 있을 것 같다.