본문 바로가기
개인 공부/개발

[django] mysql query 와 orm 비교 정리

by 아메리카노와떡볶이 2022. 5. 30.
728x90
django orm 정리

django와 mysql을 연동하면 models.py에서 migration을 통해 db에 대한 작업을 하기때문에 orm을 알아야한다.

 

1. 테이블 생성

mysql의 경우 CREATE TABLE 형식으로 만든다.
CREATE TABLE test_table (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=0

django의 models.py

class test_table(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=255,)

주의해야할 것은 django에서는 pk를 설정하지않으면 자동으로 id라는 컬럼이 생성되며 pk로 설정된다.

 

2. 테이블 조회 - SELECT

  • mysql의 경우 select 를 사용한다.
  • 조건을 추가하고싶을 때는 where 를 사용한다
  • 개수 제한을 원할때는 LIMIT을 사용한다
SELECT * FROM table_name;
SELECT * FROM table_name WHERE id=1;
SELECT * FROM table_name LIMIT 5;
SELECT * FROM table_name WHERE id=1 AND name='sandy';

django의 orm의 경우 objects.all() 메소드를 사용한다. 조건을 추가하고싶을때는 filter()를 사용한다

개수제한을 걸고싶을때는 리스트에서 원하는 만큼만 가져온다.

model_name.objects.all()
model_name.objects.filter(id=1)
model_name.objects.all()[:5]
model_name.objects.get(id=1) #Return : Object
model_name.objects.filter(id=1) #Return : QuerySet
model_name.objects.filter(id=1,name='sandy')

from django.db.models import Q
model_name.objects.filter(Q(id=1)|Q(name='sandy'))

 
728x90

댓글