Python 112

[Django Ninja] Schema 비교 (Schema, ModelSchema, CreateSchema)

SchemaSchema란 어떤 데이터나 객체를 정의한 규칙으로 주고 받는 것을 의미한다.다른 언어, 프레임워크에서는 DTO (Data Transfer Object) 라는 용어로도 많이 사용된다. FastAPI vs Django Ninja 스키마 방식 차이ex) FastAPI에서 Schema 는 Pydantic을 이용해 정의된다. ex) Django Ninja의 Schema는 Pydantic을 상속 받아 작성 된 방식으로 자체적으로 만든 Schema라는 모듈로 정의됨 공식 Document 에서 제공하는 3가지 Schema를 만드는 방식에 대해 알아본다. 1. Schema2. ModelSchmea3. CreateSchema Schema가장 기본적인 Schema 형태로 DRF의 Serializer와 유사하다...

Python/Django Ninja 2023.02.27

[Django Ninja] Django Ninja 프레임워크란? (with. Boiler Plate)

Django Ninja란? Django Ninja - https://github.com/vitalik/django-ninja GitHub - vitalik/django-ninja: 💨 Fast, Async-ready, Openapi, type hints based framework for building APIs 💨 Fast, Async-ready, Openapi, type hints based framework for building APIs - GitHub - vitalik/django-ninja: 💨 Fast, Async-ready, Openapi, type hints based framework for building APIs github.com Django 기반의 웹 프레임워크로 Python의 ..

Python/Django Ninja 2023.02.26

[DRF] Serializer 특징, 모듈(메소드, 인자) 비교

Serializer 란? Serializer(직렬화) : Django 객체 (Object, Queryset) => JSON 등의 데이터로 변환 DeSerializer(역직렬화) : JSON 등의 데이터 => Django의 객체(Object, Queryset) 변환 👉 Serializer 예시 GET 요청 : DB => Queryset (Model) => OrderedDict(ReturnDict) => JSON 응답 👉 DeSerializer 예시 POST 요청 : JSON => OrderedDict(ReturnDict) => Queryset (Model) => DB DRF Serializer 특징 1. DRF Serializer는 Django의 Form, ModelForm과 유사하다. 2. 기본형 Ser..

Python/DRF 2023.02.11

[Python] 가상환경, 패키지 관리 모듈 정리 (pyenv, pipenv, poetry, venv)

pyenv 👉 pyenv란? 동일 OS 내에서 Python을 여러 버전 별로 관리할 수 있는 도구 👉 pyenv 특징 공식문서에 따르면 window는 지원을 하지 않음 (Linux나 Mac) virtualenv를 통해 가상환경 생성 및 관리 (같이 설치됨) Github : https://github.com/pyenv/pyenv ex) 현재 로컬에 Python 3.10 버전을 사용중인데, 3.6 버전으로 프로젝트 진행 필요 ex) 특정 파이썬 버전을 pyenv로 설치하고 삭제가능 👉 pyenv 설치 방법 pyenv 설치는 다음 공식문서를 참고 https://github.com/pyenv/pyenv#homebrew-in-macos 👉 pyenv 주요 명령어 # pyenv 설치 가능한 python 버전 확인 ..

Python/Advanced 2023.02.11

[Python 비동기] (3) Library, Framework 특징 비교

비동기(Asynchronous)란? 👉 Sync vs Async 차이 Synchronous : 함수 A는 함수 B의 수행 상태를 신경쓰며, 계속 상태를 체크 (완료됬는지) Asynchronous : 함수 A는 함수 B의 수행 상태를 신경쓰지 않고, B 혼자 알아서 진행 후 Callback 반환 즉, 호출된 함수(B)를 호출한 함수(A)가 신경쓰는지, 호출된 함수(B)가 알아서 하는지에 따라 동기/비동기 👉 비동기의 가장 큰 장점 주어진 자원을 최대한 활용하여, 순차 코드, 일괄 처리 보다 I/O 부하를 더 빠르게 처리할 수 있다는 점 즉 비동기란, 실행 작업의 완료 Callback 도착 전까지 메인 프로세스/스레드는 멈추지 않고, 다른 작업을 수행하며 주어진 자원을 최대한 활용하는 것 👉 비동기라는 동기..

Python/Advanced 2023.02.09

[Python 비동기] (2) Generator, Async/await 코루틴 코드 비교

이전 글에서는 Python의 코루틴, Async/await 용어 등에 대해 이해해보았다. (개념과 설명에 대한 이해는 이전글 참조) https://yubi5050.tistory.com/234 [Python 비동기] (1) 코루틴, Async/await 용어 이해 Python 비동기 배경 1. python 은 동기 기반으로 설계된 언어로 대부분의 내장 API들이 동기로 작동 2. python 의 비동기 방식(코루틴)들은 Generator를 이용해 비동기 코드를 작성함 3. python 3.4에 asyncio 라 yubi5050.tistory.com 이번 글에서는 Python 코루틴 구현을 위한 Generator와 asyncio 라이브러리의 async/await 구문을 구현 및 비교해본다. 코드 예제 - G..

Python/Advanced 2023.02.09

[Python 비동기] (1) 코루틴, 비동기 관련 용어 이해

Python 비동기 배경 1. python 은 동기 기반으로 설계된 언어로 대부분의 내장 API들이 동기로 작동 2. python 의 비동기 방식(코루틴)들은 Generator를 이용해 비동기 코드를 작성함 3. python 3.4에 asyncio 라이브러리가 표준으로 채택 4. python 3.5에 async/await 키워드가 추가되며, 비동기 프로그래밍이 가능해짐 과거의 Python 비동기 구현은 generator를 이용해 Coroutine을 구현하는 것 현재의 Python 비동기 구현은 asyncio 라이브러리의 async/await 구문을 사용하여 구현하는 것 ※ 여기서 과거란 python 3.5 버전 이전의 방식을 뜻함 Python 비동기 관련 용어 키워드 Subroutine : 특정 프로그램..

Python/Advanced 2023.02.08

[Django] Django Model - Table Field, Relationship

Model - Field Type 필드 타입 설명 BooleanField True / False 이진 논리 필드 CharField 문자열 값 (일반적으로 짧은) TextField 문자열 값 (일반적으로 긴) EmailField 유휴한 이메일 주소인지 체크 (EmailValidator) IntegerField 정수 데이터 저장 필드 PostiveIntegerField PositiveBigIntegerField 0 or 양수의 정수 필드 FloatField 실수 데이터 저장 필드 DecimalField 고정 소수점 필드 (ex. 4.222) DateField 날짜 데이터 저장 필드 Python의 Datetime.date에 대응되는 필드 DateTimeField 날짜 + 시간 데이터 저장 필드 Python의 ..

Python/Django 2023.02.07

[FastAPI] (8) API Router 사용하기

API Router 사용하기 API Endpoints를 여러 .py 파일에 분리하여 작성하기 위한 APIRouter 라는 모듈이 존재한다. 해당 모듈을 사용하면 큰 갈래의 API들 끼리는 묶어 관리를 편하게 할 수 있다. 📁 Folder Structure ├── router │ ├── router_1.py // health check router │ └── router_2.py // servic1 router └── app.py Router 분기 작성 app.py에 router를 추가하고, prefix, tags 등을 설정한다. 🛠 app.py import uvicorn from fastapi import FastAPI from routers.router_1 import router as health_r..

Python/FastAPI 2022.12.16

[DRF] 간단한 캐싱 기능 구현 하기 (by. redis, DRF)

1. Docker redis run & django-redis 설치 Memcached 형태의 Memory DB인 Redis를 Docker로 작동시킨다. $ docker run -p 6379:6379 redis Django에서 Redis에 접근하기 위한 추가 library를 설치한다. $ pip install django-redis 2. settings.py 작성 django-admin을 이용한 project는 만들었다고 가정 CACHES = { 'default':{ 'BACKEND': 'django_redis.cache.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379', } } 3. urls.py 작성 from django.contrib import admin fr..

Python/DRF 2022.11.19