본문 바로가기

반응형

전체 글

(264)
[Django] Model Query 지난 글에서는 Greeting 이라는 model 을 정의하고 migration 을 통해 database 에 model 을 적용해보았다. 이번 글에서는 django 에서 제공해주는 API 를 사용하여 model 객체를 생성하고 수정, 삭제하는 방법을 정리해본다.1. Managerdjango model 을 사용하여 query 를 작성하기 전에 manager 라는 개념에 대해서 먼저 알아보자. manager 는 django model 에 database query 작업을 제공해주는 인터페이스로 django app 에 포함된 모든 model 들은 최소 하나의 manager 를 가지고 있다.model 클래스가 가지고 있는 manager 는 기본적으로 objects 라는 이름을 가진다. 해당 model 과 관련된 ..
[Django] Model 정의와 Migration 지난 글에서는 hello 라는 django app 을 추가하고 간단한 api 를 추가하고 호출해보는 과정을 진행해보았다. 이번에는 django model 을 추가하고 django 기능을 사용해 database 에 적용하는 과정을 진행해보겠다.1. Django Model- django modeldjango 에는 model 이라는 개념이 있다. model 은 데이터 정보에 대해 정의된 클래스로, 데이터베이스의 테이블에 매핑되는 클래스라고 생각하면 된다. 테이블의 각 컬럼에 매핑되는 속성과 이를 다루는 메서드들을 포함하고 있다. django 의 migration 기능을 통해 model 을 database schema 에 적용할 수 있다.- model 정의model 을 정의하기 위해서는 django.db.mod..
[Django] Django app 생성 지난 글에서는 python 가상환경을 구성하고 Django 설치, Django project 생성까지 진행했다. 이번 글에서는 생성된 project 에 Django application 을 추가하고 간단하게 http api 를 구현해보겠다.1. appilcation 생성django 에는 app 이라는 개념이 있다. app 은 실제 서비스 로직을 가지는 web application 을 의미하는데, django project 는 django 관련 설정과 여러 app 들로 구성된다. app 은 django 의 특정 컨벤션에 따른 python 패키지로 구성되는데, 아래와 같이 간단한 명령어로 app 을 생성할 수 있다. $ python manage.py startapp hello 명령어를 실행하면 hello 라..
[Django] Django 설치 와 project 생성 지금 회사에 입사하면서 Django framework 를 처음 사용해보게 되었다. 실무를 하면서 Django 에 대해서 알아가면서 업무를 수행했다. 연말을 맞아서 파편화된 Django 지식들을 모아서 시리즈로 써보려고 한다. Django 설치, 프로젝트 초기화부터 ORM, cache, DB 연결, multi-tenancy, wsgi, asgi, celery 등등 다양한 기능과 여러 서비스들의 연동까지 최대한 다양한 내용들을 정리해보고자 한다. 이 글에서는 가장 기본이 되는 Djang 설치와 Django project 생성에 대해서 정리해보았다.1. django 설치가상환경 설정django 는 python 에서 웹 서비스를 구현하기 위한 framework 이다. 이때문에 기본적으로 python 이 설치된 ..
[Python] Exception Chaining (raise ... from ...) python 개발을 하면서 예외처리를 하다가 raise 와 from 이 같이 쓰이는 문법을 봤다. 어떤 용도로 쓰이는지 어떻게 동작하는지 궁금해서 관련한 내용들을 찾아보고 예제도 작성해보았다.1. Exception Chainingexcept 문 영역에서 처리되지 않는 예외가 발생하게되면, 처리중인 예외에 해당 내용이 에러 메시지에 추가되어 함께 처리되게 된다. 두 예외의 에러 메시지는 'During handling of the above exception, another exception occurred:' 라는 메시지로 연결되어 함께 출력되게 된다. 이 상황에서 raise 문에 from 을 함께 쓴다면 별개의 두 에러가 발생한 것이 아닌 에러의 인과관계를 연결하여 에러메시지를 처리할 수 있게 된다.자세..
[Django] Django Model Field - FileField 사용예제 (2) 지난 글에서 Django 의 모델 필드 중 FileField 에 대해서 알아보았다. FileField 는 필드에 파일을 연결하고 이를 저장하는 기능을 하는 타입으로 이 글에서는 이 필드를 사용하여 파일을 저장해보려한다.FileField 사용예제Django model 에서 FileField 를 사용하여 파일을 저장하는 예제이다. 먼저 장고의 settings.py 에서 FileField 의 파일을 저장할 기본 경로와 URL 인 MEDIA_ROOT 와 MEDIA_URL 값을 저장해준다. # settings.pyMEDIA_URL = '/media/'MEDIA_ROOT = os.path.join(BASE_DIR, "media") 그 다음 FileField 필드를 가지는 django model 클래스를 정의했다. ..
[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..
[DB] 데이터 스캔방식과 인덱스 - MySQL 예제 백엔드 개발을 하다보면 성능에 대해서 고민을 하게된다. 대표적으로 비즈니스 로직의 시간복잡도, 외부 서비스들과의 통신, 그리고 DB 쿼리의 성능 등이 있을 것이다. 오늘 이 글에서는 DB 쿼리의 성능 최적화, SQL 튜닝의 대표적인 방법인 인덱스에 대해서 정리해 보려고 한다. ORM 을 많이 사용하다보니 기반이 되는 SQL 과 그 최적화에 대해서 소홀했던 부분이 있어서 기존에 알고있던 인덱스에 대한 정보들을 정리해서 작성해보고자 한다.1. 인덱스인덱스는 이름 그대로 원하는 데이터를 빠르게 찾기 위한 자료구조이다. 인덱스로 설정한 데이터들을 실제 데이터와 따로 보관 및 관리하여 테이블 전체를 스캔하지 않고도 데이터를 찾을 수 있도록 한다. 기본적으로 B-tree 구조로 구성되어 있으며, leaf node ..

반응형