티스토리 뷰

1. Pydantic

- python에서 데이터 유효성검사와 데이터 구조를 정의하는데 사용

- 데이터의 정확성타입 안전성 보장

 

1) 데이터 직렬화(Serialization)

- 데이터를 저장하거나 전송할 수 있는 형식으로 변환하는 과정

- 예: 데이터(객체, 딕셔너리 등)을 JSON, XML, 바이너리 형식 등으로 변환

- 네트워크 통신이나 파일 저장을 위해 사용

import json

# 파이썬 딕셔너리 데이터
data = {"name": "John", "age": 30}

# JSON 형식으로 직렬화
json_data = json.dumps(data)
print(json_data)  # '{"name": "John", "age": 30}'

 

2) 역직렬화

- 직렬화된 베이터를 원래 데이터 구조로 복원하는 과정

- JSON으로 변환된 데이터를 다시 Python 객체(딕셔너리 등)로 복원

- 주로 저장된 데이터를 읽을 때나 API 응답 데이터 처리에 사용

# JSON 데이터를 원래 딕셔너리로 역직렬화
original_data = json.loads(json_data)
print(original_data)  # {'name': 'John', 'age': 30}

 

3) 제약조건

- ge : ~보다 크거나 같다

- le : ~보다 작거나 같다

- min_length : 문자열의 최소 기이

- max_length : 문자열의 최대 길이

 

2. SQLAlchemy

- python에서 데이터베이스와 상호작용하기 위한 ORM 및 데이터베이스 툴킷

- 데이터베이스 테이블과 python 객체간의 매핑 제공

 

3. Pydantic과 SQLAlchemy의 결합

- 데이터 유효성 검증과 데이터 베이스 작업을 매끄럽게 연결

- 예시

from pydantic import BaseModel
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# SQLAlchemy 설정
Base = declarative_base()

class UserDB(Base):
    __tablename__ = 'users'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    email = Column(String)

# Pydantic 모델 정의
class UserSchema(BaseModel):
    id: int
    name: str
    email: str

# 데이터베이스 초기화
engine = create_engine("sqlite:///example.db", echo=True)
Session = sessionmaker(bind=engine)
session = Session()

# SQLAlchemy에서 데이터를 가져오고 Pydantic으로 변환
db_user = session.query(UserDB).filter_by(id=1).first()
if db_user:
    user_schema = UserSchema.from_orm(db_user)
    print(user_schema.json())  # Pydantic으로 직렬화된 JSON 출력
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함