본문 바로가기

반응형

ORM

(3)
[Django] Django Model Field - FileField (1) 1. FileFieldFileField 는 파일 업로드를 위한 필드이다. FileField 는 두가지 선택 인자가 있는데 upload_to 와 storage 이다.- FileField.upload_to파일 업로드 디렉토리와 파일 이름을 설정하는 속성으로 두가지 방법으로 설정할 수 있다. 두가지 방법 모두 설정한 값들이 Storage.save() 메서드로 전달된다. 만약 아래와 같이 strftime() 형식을 포함한 문자열 값이나 Path 객체로 값을 설정한 경우, 파일 업로드시의 날짜/시간으로 해당 형식이 대체된다. class MyModel(models.Model): # 파일은 MEDIA_ROOT/uploads 경로에 저장된다. upload = models.FileField(upload_to="uploa..
[Django] select_related() 와 prefetch_related() Django 로 백엔드를 개발하던 중, 연관관계가 복잡한 엔티티들의 조회를 구현해야하는 경우가 발생했다. 성능을 생각해서 raw query 로 작성을 하려다가 이번기회에 Django ORM 에서 안 써본 기능 들을 쓰고싶어서 ORM 으로 개발하기로 했다. 연관관계를 가지는 엔티티들을 조회할 때, 일반 방식으로 접근하면 lazy loading 으로 N+1 문제가 발생하게 된다. 이때문에 한번에 객체들을 조회할 수 있도록 eager loading 방식으로 구현해야 한다. Djnago ORM 에서는 eager loading 방식을 select_related() 와 prefetch_related() 두가지 기능으로 제공해주어 이에 대한 정리를 해보려한다.1. eager loading (즉시 로딩)ORM 에서 외..
[SQLAlchemy] SQLAlchemy 기본 설명 SQLAlchemy 는 파이썬의 ORM 라이브러리 중 하나이다. 이 글에서는 SQLAlchemy 의 Quick Start 내용을 기반으로 SQLAlchemy 의 기본적인 내용들을 기술한다. 1. Database 연결 - Engine Engine 은 SQLAlchemy 라이브러리의 시작점이다. SQLAlchemy 의 Pool 과 Dialect 기능을 사용하여 실제 Database 에 접근하고 DB API 를 사용할 수 있도록 해준다. 여기서 Pool 은 DB Connection Pool 을 추상화한 클래스로 connect() 를 통해서 DBAPI 연결을 생성한다. Dialect 는 SQLAlchemy 를 여러 종류의 database 와 DB API 들과 연동하여 사용할 수 있도록 하는 역할을 한다. 각 d..

반응형