Python/Django

[Django] 무식한 라이브러리 분해 1 (django.db)

yubi5050 2022. 5. 30. 16:17

Django.db

  • 일반적으로 Django는 ORM(Object-Relational Mapping)은 app의 models.py에 Class를 정의하고 해당 ORM 객체를 만들고 DB와 연동한다.
  • 해당 과정에서 Django.db 의 모듈이 주로 사용되는데 관련 라이브러리의 소스코드를 분해해 보았다.

 

Django.db 
Django.DB 전체 파일

- backends/
- migrations/
- models/
- utils/ 
Django.
db.backends
Django에서 지원하는 DB들에 대한 Connector, Adapter 역할

- 실제 DB에 CRUD 해주는 역할
- Django Table을 해당 DB Table로 바꾸어 주는 역할
- 해당 모듈을 사용하려면 추가 라이브러리 설치가 필요
- mysql => mysqlclient / postgresql => psycopg2
Django.
db.models
Django db에서 가장 중요한 부분

- SQL 에서 쓰이는 모든 문법들과 ORM 객체 관련 함수 들
- Field에 대한 속성을 실질적으로 정의 하는 곳으로 보인다.

모듈 종류
- aggregates.py : 집계 역할 (avg, count, max, min 등)
- constraints.py : 제약 조건 (unique 등)
- expressions.py : 표현식 (orderby, exists 등)
- fields/ : Class의 Field 값 객체 선언시 사용 (CharField, DateField 등)
- query.py, query_utils.py : 실제 만들어진 sql문으로 문법 Check