반응형

Python 56

FastAPI에서 MySQL 연결

FastAPI에선 SQLAlchemy ORM 라이브러리로 DB를 조작할 수 있다. 먼저 MySQL과 연결하기 위해 sqlalchemy를 설치한다. pip install sqlalchemy ✅ 설정 파일 추가하기 FastAPI에 ORM을 적용하려면 데이터베이스 설정이 필요하다. database.py 파일을 생성하고 아래와 같이 코드를 작성한다. # app/database/conn.py from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from common.config import Settings SQLALCHEMY_DAT..

Python/FastAPI 2023.12.24

Dependency와 FastAPI에서의 Dependency Injection

의존성(Dependency)이란? 코드에서 의존성은 두 모듈간의 연결을 의미한다. class A가 다른 class B를 사용할 때 A는 B에 의존한다고 볼 수 있다. 즉 한 객체의 코드에서 다른 객체를 생성하거나 다른 객체의 메서드를 호출할 때, 또는 파라미터로 객체를 전달받아 사용할 때 의존성이 발생한다고 할 수 있다. 이렇게 되면 A는 B 없이는 작동할 수 없고 B를 재사용하지 않으면 A또한 재사용할 수 없으며 하나를 수정하면 다른 클래스에도 영향을 끼치게 된다. 강한 결합은 강한 의존성을 만들게 되고 이는 유지보수를 힘들게 하며 재사용을 어렵게 만든다. ​ 의존성 주입(Dependency Injection)이란? 흔히 DI(Dependency Injection)라고 불리는 의존성 주입은 위와 같은 ..

Python/FastAPI 2023.12.22

FastAPI에서 JWT 로그인 기능 구현하기(회고)

IT 서비스를 이용하면서 로그인 기능은 흔히 볼 수 있는 기능이다. 가장 흔하고 구현을 위한 수 많은 라이브러리가 존재하기 때문에 쉽지만, 그만큼 보안에 있어서 가장 중요한 부분이기 때문에 신경써야 할 점들이 많다. 회사에서 내년 3월 일본에 테스트할 서비스를 만들면서 로그인 기능구현을 담당하게 됐다. 어떤 방식을 적용하면 좋을까 고민하게 됐었고, JWT와 AccessToken, RefreshToken을 이용하기로 했다. 이틀이라는 시간에 걸쳐 현재는 로그인 구현을 완료한 상황이지만 구현하는 과정에서 생겼던 의문점과 회고를 기록하고 싶다는 생각이 들었다. FastAPI에 대한 이해 현재 다니고 있는 회사는 Python 기반의 FastAPI 프레임워크를 사용한다. FastAPI는 어플리케이션을 빠르게 개발..

Python/FastAPI 2023.12.16

[DRF] CORS에러 처리하기

얼마전 면접을 봤던 회사에서 CORS를 처리한 경험을 말해달라고 했다. CORS에 대해서 간략하게만 알고 있었고, Django에서는 프론트엔드와 백엔드가 분리되어 있지 않다보니 CORS 에러를 경험하지 못했고, 제대로 된 답변을 하지 못했다. 탈탈털린 경험을 바탕으로 오늘은 CORS에 대해서 정리해보고자 한다. ✅ CORS란? CORS란 Cross-Origin Resource Sharing의 약자로, 의미 그대로 서로 다른 출처에서 리소스를 공유하는 것을 CORS라고 한다. CORS는 출처가 다른 자원들을 공유한다는 뜻으로 한 출처에 있는 자원에서 다른 출처에 있는 자원에 접근하도록 하는 개념이다. 하지만 CORS를 위해서는 별도의 설정이 필요하다. 필요한 설정을 하지 않은 채 서로 다른 출처에서 리소스..

Python/DRF 2023.03.29

[DRF] 이론 정리(Serializer, REST API)

✅ DRF(Django Rest Framework)와 Django 차이점이 뭔데? Django로 프로젝트를 진행하다가 DRF를 사용해보면서 이해가 안됐던 점들이 많다. 지금은 어느정도 사용법에 익숙해진 느낌이지만 이론적인 부분을 정확하게 짚고 넘어가고자 차이점을 비교해보고자 한다. ✅ DRF(Django REST Framework) Django는 프론트엔드와 백엔드를 모두 처리해주는 풀스택 프레임워크이다. 프로젝트에 적용한걸 예시로 들어보면 @login_required def create(request): form = QuestionForm(request.POST or None, request.FILES or None) if form.is_valid(): temp = form.save(commit=Fal..

Python/DRF 2023.03.28

[AWS] IAM 이란?

프로젝트를 하면서 백엔드 부분 배포를 담당하게 됐다. 간단할 줄 알았던 배포에 3일이라는 시간을 쏟으면서 어느 한 부분을 놓치고 있다는 생각이 들었고, 놓친 부분을 확인하기 위해 전체적인 흐름에 대한 파악이 중요하다고 느껴 블로그에 정리하면서 공부해보고자 한다. ✅ IAM 이란? IAM(AWS Identity and Access Management)은 AWS 리소스에 대한 엑세스를 안전하게 제어할 수 있는 웹 서비스이다. 키 모양의 그림에서도 알 수 있듯이, IAM을 사용해 리소스를 사용하도록 인증 및 권한 부여된 대상을 제어할 수 있다. AWS 서비스에서는 어떠한 요청을 처리하기 전에 자격 증명에 대한 것을 IAM에 보내게 되는데 IAM에서는 해당 자격 증명을 보고 유저가 올바른 유저인지(인증), 유저..

AWS 2023.03.06

[python] 백준 7569번: 토마토(BFS)

# 7569 토마토 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline from collections import deque move = [(0,0,1), (0,0,-1), (1,0,0), (0,1,0), (-1,0,0), (0,-1,0)] M, N, H = map(int, input().split()) graph = [[list(map(int, i..

Algorithm 2023.02.23

[DRF] retrieve 메서드와 router 변수 사용하기

# APIvew와 ViewSet으로 Response하기 [DRF] DB에 저장된 데이터를 APIview와 ViewSet으로 Response하기 Django REST Framework에서 views.py 파일은 API 엔드포인트를 처리하는 함수를 정의하는 곳이다. 기본적으로 DRF에서 제공하는 APIview나 ViewSet 클래스를 상속하여 사용하며, 각 클래스는 HTTP 요청 메서드(GE emhaki.tistory.com 이전에 포스팅했던 내용의 확장으로 News 리스트를 출력하고 detail페이지까지 넘겨주는 방법에 대해 정리해보고자 한다. 🔎 views.py class NewsViewSet(viewsets.ModelViewSet): queryset = News.objects.all() serializ..

Python/DRF 2023.02.18

[python] 백준 2293번: 동전1(DP)

# 2293 동전1 https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline n, k = map(int, input().split()) coins = [] for _ in range(n): coins.append(int(input())) dp = [0] * (k + 1) dp[0] = 1 for i in coins: for j in range(i, k+1): if j - i >=..

Algorithm 2023.02.18

[python] 백준 12865번: 평범한 배낭(DP)

# 12865 평범한 배낭 https://www.acmicpc.net/problem/12865 12865번: 평범한 배낭 첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두 번째 줄부터 N개의 줄에 거쳐 각 물건의 무게 W(1 ≤ W ≤ 100,000)와 해당 물건의 가치 V(0 ≤ V ≤ 1,000) www.acmicpc.net ⭐ 코드 import sys input = sys.stdin.readline N, K = map(int, input().split()) bag = [(0,0)] # 인덱스 0자리 차지하기 for _ in range(N): W, V = map(int, input().split()) bag.append((W,..

Algorithm 2023.02.18
728x90
반응형