데이터베이스의 종류
- 관계형 데이터베이스(
MySql
)
- NoSQL(
MongoDB
)
데이터베이스에 쿼리하기 위한 언어 → SQL
같은 작업을 하더라도, 적은 수의 SQL
, 보다 높은 성능의 SQL
을 사용해야 함
직접 쿼리를 작성하기도 하지만, ORM을 통해 SQL
을 생성, 실행함
ORM
을 쓰더라도, 내가 작성한 ORM코드로 어떤 SQL
이 실행되고 있는지 파악을 하고, 이를 최적화 할 수 있어야 함(django-debug-toolbar)활용
장고 기본 ORM Model
은 RDB(관계형 데이터베이스)만을 지원함 NoSql을 쓰려면 다른 ORM을 사용해야함
Python
의 ORM
은 여러가지가 존재함 Models
, django-mongodb-engine
, hot-redis
등등 필요한것을 골라먹으면 됨
장고의 강점은 Model
과 Form
이 강력하다는 것!
SQL을 직접 작성할 수도 있지만, 웬만하면 ORM
을 사용해야 함(왜? → SQL injection (sql문을 form을 통해 직접 접근할 수 있을때, 쿼리문을 날리는 공격) 을 방지하기 위함)
Django Model
- 데이터베이스 테이블과 파이썬 클래스를 1:1로 매핑
- 모델 클래스명은 단수형으로 지정
- 매핑되는 모델 클래스는 DB 테이블 필드 내역이 일치해야함
- 데이터베이스 설계가 필수
모델 활용 순서
- 모델 클래스 작성
- 모델 클래스로부터 마이그레이션 파일 생성
- 마이그레이션 파일을 데이터베이스에 적용
- 모델 활용
외부에서 데이터베이스를 작성한 경우
inspectdb 명령어로 클래스 작성가능
Uploaded by N2T