분류 전체보기
-
DBPython 2025. 12. 11. 13:36
CRUDSQL 예시SQLAlchemy 2.0 코드결과 반환 메서드SELECT AllSELECT * FROM users;stmt = select(User)db.scalars(stmt).all() (객체 리스트)SELECT OneSELECT * FROM users WHERE id = 10;stmt = select(User).where(User.id == 10)db.scalars(stmt).one_or_none() (단일 객체 또는 None)UPDATEUPDATE users SET name = 'New Name' WHERE id = 10;stmt = update(User).where(User.id == 10).values(name="New Name")db.execute(stmt); db.commit(DELET..
-
셀러리(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("제목이 없는 게시글을 생성합니다.") ..
-
tuplePython 2025. 8. 29. 09:15
📌 파이썬 튜플 특징 & 장점 정리구분설명정의여러 개의 값을 하나의 변수에 묶어서 저장할 수 있는 불변(immutable) 자료형불변성 (Immutable)한 번 생성하면 내부 요소를 변경, 추가, 삭제할 수 없음속도리스트보다 메모리 사용량이 적고, 접근 속도가 빠름안전성값이 변하지 않아 데이터 보호가 필요할 때 유리해시 가능성내부 요소가 모두 불변 객체일 경우 튜플은 해시 가능 → 딕셔너리의 키, 집합(set)의 원소로 사용 가능메모리 효율리스트보다 상대적으로 가볍고 메모리 효율적순서 보장저장된 순서를 유지하며, 인덱스로 접근 가능중복 허용동일한 값 여러 개 저장 가능다양한 활용함수에서 여러 값 반환 시 주로 사용, 언패킹(unpacking) 가능읽기 전용 시맨틱읽기 전용 데이터 컨테이너 역할 (실수..
-
@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..