본문 바로가기

Pydantic model_config 속성 정리 model_config- 딕셔너리를 사용하여 모델 전체에 대한 설정을 선언- 모델의 동작 방식, 직렬화/역직렬화 규칙, 필드 처리 방식 등을 제어하는 메타 설정✅ 기본 예시class MyModel(BaseModel): id: int name: str model_config = { "title": "사용자 모델", "from_attributes": True, "populate_by_name": True, }✅ 주요 model_config 속성과 설명속성명설명title모델의 제목(문서화, OpenAPI 등에서 사용됨)description모델 설명from_attributes✅ ORM 객체나 일반 객체에서 속성 기반으로 필드 값을 추출할 수 있게 함 (..
Pydantic로 구조짜기 (부제:Pydantic BaseModel은 immutable일까?) ORM 객체로 받은 뒤 Pydantic 모델로 변경할 수 있어? ChatGPT의 말:네, FastAPI + SQLAlchemy 환경에서 ORM 객체를 Pydantic 모델로 변경하는 것은 매우 일반적인 작업입니다. FastAPI는 이를 위해 pydantic 모델의 from_orm() 기능을 공식적으로 지원합니다.✅ 전체 흐름 요약1. SQLAlchemy ORM 객체 조회→2. Pydantic 모델 정의 (Config.orm_mode = True)→3. PydanticModel.from_orm(orm_instance) 로 변환📌 예시 코드🔹 1. SQLAlchemy ORM 모델 # models.pyfrom sqlalchemy import Column, Integer, Stringfrom sqlalche..
자료구조 [Queue, Stack, Heap] ✅ 2. 큐 / 스택 / 셋 / 맵의 본질적 차이이제 이 네 가지 자료구조의 핵심 철학, 자료 보관 방식, 접근 패턴을 비교해볼게요.항목큐 (Queue)스택 (Stack)셋 (Set)맵 (Map / Dictionary)추상 개념줄 (대기열)쌓기 (접시 더미)집합 (중복 없음)키-값 대응 표저장 순서 유지예: FIFO예: LIFO보통 없음 (순서 중요 X)보통 없음 (Key 중심 접근)중복 허용✅ 가능✅ 가능❌ 허용 안 됨❌ Key 중복 안 됨접근 방식앞에서 제거위에서 제거값의 존재 여부만 확인Key로 접근대표 연산enqueue, dequeuepush, popadd, remove, input, get, in시간 복잡도O(1) 삽입/삭제O(1) 삽입/삭제O(1) 존재 확인 (해시기반)O(1) 조회/삽입 (해..
RAG (Retrieval-Augmented Generation) 🔍 RAG (Retrieval-Augmented Generation)란?**RAG (Retrieval-Augmented Generation)**은 검색 기반 생성 기법으로, **대규모 언어 모델(LLM)**이 외부 데이터베이스에서 정보를 검색한 후, 해당 정보를 바탕으로 응답을 생성하는 방식입니다.즉, 단순한 **문장 생성(Text Generation)**이 아니라, **검색(Retrieval)**을 통해 실시간 정보를 활용하여 더욱 정확하고 신뢰할 수 있는 응답을 제공합니다.🔹 왜 RAG가 중요한가?일반적인 LLM (예: GPT-4, Claude, Gemini)은 사전에 학습된 데이터를 기반으로 응답을 생성하지만, 최신 정보나 학습 데이터에 없는 내용은 잘못된 정보를 제공할 가능성이 있습니다.📌 ..
Thread & Task ✅ CS 관점에서 스레드(Thread)와 태스크(Task)의 차이➡ 스레드(Thread): 운영체제(OS)에서 직접 관리하는 실행 단위➡ 태스크(Task): 일반적으로 "작업 단위"를 의미하며, 특정 환경에 따라 다르게 정의됨🔥 1️⃣ 스레드(Thread)란? (CS 관점)➡ 스레드는 운영체제가 관리하는 실행 단위로, 하나의 프로세스 내에서 실행되는 흐름입니다.➡ 각 스레드는 자신만의 레지스터, 스택을 가지며, 동시에 실행될 수 있음.➡ 멀티스레드 환경에서는 여러 개의 스레드가 동시에 실행되며, CPU에서 병렬적으로 처리될 수도 있음.📌 운영체제에서의 스레드 특징운영체제가 관리✅ OS가 직접 생성, 스케줄링, 컨텍스트 스위칭멀티코어 활용 가능✅ 여러 개의 CPU에서 병렬 실행 가능각 스레드는 독립적인..
Semaphore ✅ Semaphore의 정의 (CS 관점)➡ **Semaphore(세마포어)**는 멀티스레딩 및 병렬 프로그래밍에서 공유 리소스의 접근을 제한하는 동기화 기법입니다.➡ 공유 리소스(예: 네트워크 연결, 데이터베이스, 파일 등)에 대한 동시 접근을 제어하기 위해 사용됩니다.🔥 1️⃣ Semaphore란? (CS 기본 개념)➡ Semaphore는 "허가증"을 관리하는 카운터입니다.➡ N개의 허가증(Tickets)을 가지며, 각 스레드(Task)가 실행되기 위해서는 하나의 허가증을 획득해야 합니다.➡ 허가증이 남아 있으면 스레드(Task)가 실행될 수 있으며, 허가증이 없으면 대기(Blocking) 상태가 됩니다.✅ Semaphore 동작 개념상황Semaphore 동작허가증 있음 (count > 0)✅ 스레..
[미해결] MySQL + Python + SALAlchemy SALAlchemy 의존성 문제를 해결 못함. 미해결 상태. pymysql이나 mysqlclient 같은 드라이버는 SQLAlchemy가 MySQL 데이터베이스와 통신하기 위해 꼭 필요합니다. SQLAlchemy는 데이터베이스와의 연결을 추상화하는 ORM 도구로, 실제 데이터베이스와 연결하려면 MySQL과 통신할 수 있는 드라이버가 필요합니다.왜 드라이버가 필요한가?SQLAlchemy는 데이터베이스와 직접 통신하지 않습니다. 대신, 드라이버를 통해 SQL 쿼리를 전송하고 결과를 반환받습니다. MySQL과 연결하려면 MySQL 프로토콜을 이해하고 처리할 수 있는 드라이버가 필요합니다.드라이버 옵션SQLAlchemy에서 MySQL을 사용할 때 선택할 수 있는 드라이버는 다음과 같습니다:mysqlclientC..
thread & event loop & task 1event loop 내 n task하나의 스레드에는 하나의 event loop 만 실행가능 cannot schedule new futures after interpreter shutdownRuntimeError: Cannot close a running event loop task.cancel()await task > 무한 대기 없으면 RuntimeError: Cannot close a running event loop 그리고 실행하면 cannot schedule new futures after interpreter shutdown    ✔ 질문 요약:loop1 = create_safe_loop() 실행 후loop2 = create_safe_loop() 실행하면두 번째 create_safe_loop()..