SQLAlchemy

이예나·2026년 9월 17일
post-thumbnail

[ 문장 시작할 떄 정의할 코드 ] $nbsp

import requests
from bs4 import BeautifulSoup as bs
import json

import asyncio
from datetime import datetime, timedelta, timezone
from sqlalchemy import func, create_engine, Identity, String, DateTime, Integer, BigInteger, Sequence, String, UniqueConstraint
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, Session, relationship
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
from sqlalchemy import select, insert, update, delete
from pydantic import BaseModel, ConfigDict

( 설정 파일 주소 )

POSTGRESQL_DATABASE_URL = "postgresql+psycopg_async://hr:1234@localhost:5432/myapp"

POSTGRESQLDATABASE_URL = "postgresql+asyncpg://hr:1234@localhost:5432/myapp"
engine = create_async_engine(POSTGRESQL_DATABASE_URL, echo=False)
AsyncSessionLocal = async_sessionmaker(engine, expire_on_commit=False, class
=AsyncSession)

SQLAlchemy ORM 모델

class Base(DeclarativeBase):
|--|pass

클래스(스키마) - VO ;class

class 이름(Base):

__tablename__ = "BD에 들어갈 이름(이름s)"

primary_key: pk 설정

Identity: 자동증가

POSTGRESQLDATABASE_URL = "postgresql+asyncpg://hr:1234@localhost:5432/myapp"
engine = create_async_engine(POSTGRESQL_DATABASE_URL, echo=False)
AsyncSessionLocal = async_sessionmaker(engine, expire_on_commit=False, class
=AsyncSession)

SQLAlchemy ORM 모델

class Base(DeclarativeBase):
pass

클래스(스키마)

class Member(Base):
__tablename__ = "members"

primary_key: pk 설정
Identity: 자동증가
nullable=False: not null
unique=True: unique

[예시]

라이브러리 이름(Pydantic)에서 필요한 두 기능(BaseModel, ConfigDict)을 가져오는 코드

from pydantic import BaseModel, ConfigDict

pydantic v2: Model -> dict 바꿔주는 설정

model_config = ConfigDict(from_attributes=True)


__ | None = None : 들어갈 수도있고 없을 수도 있음

pydentic 형변환
Model -> dict

model_dump()
: pydentic 메서드 - dict -> class

바꿀클래스.model_validate(dict)

member_dict = new_member.model_dump(exclude_none=True)
new_member = MemberVO.model_validate(member_dict))

0개의 댓글