๐Ÿ’ก create_engine

SQLAlchemy์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๊ณ  ์—”์ง„ ์ƒ์„ฑ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ข…๋ฅ˜์™€ ์œ„์น˜, ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ ์—ฐ๊ฒฐ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณต

 

๐Ÿ’ก sessionmaker

์„ธ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์ถ”์ ํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ

sessionmaker๋Š” ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŒฉํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ํ•จ

sessionmaker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ธ์…˜์„ ์ƒ์„ฑํ•˜๋ฉด ํ•ด๋‹น ์„ธ์…˜์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

 

* ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ *

๊ฐ์ฒด ์ƒ์„ฑ์„ ์บก์ˆ ํ™”ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜

SQLAlchemy์—์„œ sessionmaker()๋Š” ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŽ™ํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ์—ญํ• 

 

๐Ÿ’ก session

์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด

sessionmaker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒ์„ฑ๋œ ์„ธ์…˜ ํŒฉํ† ๋ฆฌ๋ฅผ ํ†ตํ•ด ์„ธ์…˜์„ ์ƒ์„ฑํ•˜๊ณ , 

์„ธ์…˜์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ์กฐํšŒ, ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

 

 

1. ํŒฉํ† ๋ฆฌ ์ƒ์„ฑ

from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

# ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์ •๋ณด
DATABASE_URL = "sqlite:///./test.db"

# ์—”์ง„ ์ƒ์„ฑ
engine = create_engine(DATABASE_URL)

# ํŒฉํ† ๋ฆฌ ์ƒ์„ฑ
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

2. ์„ธ์…˜ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์‚ฌ์šฉ

from sqlalchemy.orm import Session
from fastapi import FastAPI, Depends

app = FastAPI()

# ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ(SessionLocal)๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์„ธ์…˜ ๊ฐ์ฒด ์ƒ์„ฑ
def get_db():
    db = SessionLocal()
    try:
    	# ์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ๋ฆฌ์†Œ์Šค๋กœ์„œ ์ œ๊ณต
        yield db
    finally:
        db.close()

@app.post("/items/")
async def create_item(item: Item, db: Session = Depends(get_db)):
    # db ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—… ์ˆ˜ํ–‰
    db.add(item)
    db.commit()
    db.refresh(item)
    return item

get_db()

Depends(get_db)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜์กด์„ฑ์„ ์ฃผ์ž…ํ•˜๋ฉด, FastAPI๊ฐ€ ์„ธ์…˜์„ ๊ด€๋ฆฌํ•˜๋ฉฐ ์š”์ฒญ ํ•ธ๋“ค๋Ÿฌ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์คŒ

 

์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ๋ฆฌ์†Œ์Šค๋กœ์„œ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์€

์„ธ์…˜ ๊ฐ์ฒด๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ์—์„œ ์„ธ์…˜์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ

 

์„ธ์…˜ ๊ฐ์ฒด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์—ฐ๊ฒฐ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ค‘์š”ํ•œ ์ž์›

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์„ธ์…˜์„ ์ƒ์„ฑํ•˜๊ณ  ๋‹ซ๋Š” ๊ณผ์ •์„ ์ค‘๋ณตํ•ด์„œ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ ,

ํ•„์š”ํ•œ ๊ณณ์—์„œ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Œ

 

๋ฆฌ์†Œ์Šค๋กœ์„œ ์ œ๊ณต๋œ ์„ธ์…˜ ๊ฐ์ฒด๋Š” ํ•„์š”ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ๋’ค์—๋Š” ์ž๋™์œผ๋กœ ์ •๋ฆฌ๋˜์–ด ๋‹ซํžˆ๊ฒŒ ๋จ

์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์„ธ์…˜ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ๋ณต์žกํ•œ ์ž‘์—…์„ ์ตœ์†Œํ™”ํ•˜๊ณ ,

์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ