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
'개인 공부 > 개발' 카테고리의 다른 글
[logstash] grok filter를 이용한 apache log와 snort log parsing (0) | 2022.11.07 |
---|---|
[django] ajax통신&jQuery를 이용한 데이터 실시간으로 불러오기 (0) | 2022.06.05 |
sfoj 개발 - 문제 조회 템플릿 페이징 구현 (0) | 2021.08.31 |
sfoj 개발 - 작성자(글쓴이) 표시하기 (0) | 2021.08.25 |
sfoj 개발 - 회원가입 구현 (0) | 2021.08.25 |
댓글