Python/Today
-
셀러리(Celery)Python/Today 2025. 9. 5. 13:20
1. 셀러리란?비동기 작업 처리(Asynchronous Task Processing) 및 분산 처리(Distributed Task Queue) 를 위한 파이썬 라이브러리웹 서버에서 오래 걸리는 작업을 백그라운드로 넘겨 실행하게 함즉, 웹 서버는 빠르게 응답하고, 무거운 작업은 다른 워커가 대신 처리2. 셀러리의 핵심 구성 요소 구성요소설명Producer작업을 생성하고 Broker에 전달웹 서버(Flask, Django 등)Task실행할 작업(함수)이메일 전송, 이미지 처리Broker작업을 저장하고 전달하는 메시지 큐Redis, RabbitMQWorkerBroker에서 Task를 가져와 실행celery -A tasks workerResult Backend작업 실행 결과를 저장하는 저장소Redis, DB, ..
-
타입 힌트(Tpye Hint)Python/Today 2025. 9. 3. 09:06
from typing import Optional# `typing.Optional`은 파이썬 3.9 이하 버전에서 사용합니다.# 파이썬 3.10 이상에서는 `str | None`으로 간단하게 표현 가능합니다.# 게시글을 생성하는 함수def create_post(content: str, title: str | None = None): """ 제목과 내용을 받아 게시글을 생성합니다. title: 선택적 매개변수로, 문자열이거나 None일 수 있습니다. 기본값은 None입니다. content: 필수 매개변수로, 문자열입니다. """ # title이 None인지 확인하는 조건문 if title is None: print("제목이 없는 게시글을 생성합니다.") ..
-
@injectPython/Today 2025. 8. 27. 09:24
@inject의 특징 및 장점 📝특징설명자동 의존성 주입D-I-Y 컨테이너가 의존성을 자동으로 해결하고 함수에 주입합니다. 라우터 함수가 직접 service = Service(db)와 같이 객체를 생성할 필요가 없습니다.중앙 집중식 관리모든 서비스와 그 의존성 관계가 Container.py 파일 한 곳에 정의됩니다. 덕분에 애플리케이션의 전체 의존성 구조를 한눈에 파악하기 쉽습니다.높은 코드 가독성라우터 함수가 매우 간결해집니다. Depends()를 반복적으로 작성할 필요 없이, 필요한 서비스만 Provide[...]로 선언하면 되므로 비즈니스 로직에만 집중할 수 있습니다.
-
AlembicPython/Today 2025. 8. 26. 09:20
DDL 중심으로테이블 마이그레이션을 위함특징설명데이터베이스 스키마 버전 관리Git과 유사하게, 데이터베이스 스키마의 변경 이력(revision)을 파일로 관리하고 추적합니다.DDL 중심CREATE, ALTER, DROP 등 데이터베이스의 구조를 변경하는 DDL 명령을 다룹니다. 데이터(DML)는 관리하지 않습니다.롤백 기능downgrade 명령을 통해 특정 버전으로 쉽게 되돌릴 수 있어, 문제가 발생했을 때 신속한 복구가 가능합니다.SQLAlchemy 연동SQLAlchemy와 완벽하게 통합되어 ORM 모델을 기반으로 마이그레이션 스크립트를 자동 생성(--autogenerate)하는 기능을 제공합니다.독립성Alembic은 데이터베이스에 관계없이 작동하며, alembic.ini 파일에 데이터베이스 연결 정보..
-
MappedPython/Today 2025. 8. 25. 09:23
✅ Mapped의 특징타입 힌트 지원Mapped는 파이썬 타입 힌트와 호환됩니다.ORM 모델에서 속성이 어떤 타입을 가질지 명확히 표현 가능.mapped_column()과 함께 사용단순히 Column(Integer) 대신 mapped_column(Integer)를 사용.Mapped[int] 같이 구체적인 데이터 타입을 명시.관계(relationship)도 지원Mapped[List["Child"]] 같은 형태로 관계 필드에도 사용.mypy, pyright 같은 정적 타입 검사기 지원 강화ORM 모델 코드를 IDE에서 더 정확하게 분석 가능. 정리 : 최신 SQLAlchemy 2.0 에선 반드시 사용을 권장함DB에 타입 체커를 좀 더 명확하게 한다
-
SQLAlchemy 1.3 vs 2.0 차이점Python/Today 2025. 8. 25. 09:22
✅ SQLAlchemy 1.3 vs 2.0 차이점 구분 1.3 버전 (기존) 2.0 버전 (신규)ORM 선언Column, relationship을 직접 클래스 속성에 할당Mapped, mapped_column()을 활용해 타입 힌트 기반 선언세션 관리Session = sessionmaker(bind=engine) 후 session = Session()with Session(engine) as session: 같은 컨텍스트 매니저 사용 권장쿼리 APIsession.query(User).filter(User.name=="a")session.execute(select(User).where(User.name=="a"))쿼리 반환값ORM 객체 리스트 바로 반환Result 객체 반환 → .scalars().all..
-
SQLAlchemy ORM 특징Python/Today 2025. 8. 22. 09:30
구분 설명ORM(Object Relational Mapping)파이썬 객체와 데이터베이스 테이블을 매핑하여 SQL 대신 객체 지향적으로 DB 조작 가능데이터베이스 독립성SQLite, PostgreSQL, MySQL, Oracle 등 다양한 DB 엔진을 지원하며 코드 변경 최소화세션(Session) 기반 관리DB 연결, 트랜잭션, 객체 상태(Transient, Pending, Persistent, Detached)를 세션에서 관리쿼리 빌더(Query Builder)스타일: 2.0 권장 스타일 사용 — select()/insert()/update()/delete() + session.execute(stmt) (과거 session.query()는 레거시).표현식 구성: 컬럼·연산자·함수를 조합해 SQL을 파이..