<aside>

</aside>

와! λ“œλ””μ–΄ FastAPI κ°•μ˜ 5λΆ€: λ°μ΄ν„°λ² μ΄μŠ€ 연동 및 ORM ν™œμš©μ˜ 첫 μ‹œκ°„, 20κ°•μž…λ‹ˆλ‹€!

πŸš€ κ·Έλ™μ•ˆ 정말 μ€‘μš”ν•œ κ°œλ…λ“€μ„ 많이 배우고 μ‹€μ „ ν”„λ‘œμ νŠΈμ˜ κΈ°λ³Έ CRUD κΈ°λŠ₯κΉŒμ§€ κ΅¬ν˜„ν–ˆμ£ ? 정말 λŒ€λ‹¨ν•©λ‹ˆλ‹€!

ν•˜μ§€λ§Œ 4λΆ€κΉŒμ§€μ˜ 우리 ToDo APIμ—λŠ” 치λͺ…적인 단점이 μžˆμ—ˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ μ„œλ²„λ₯Ό 껐닀 켜면 λͺ¨λ“  데이터가 μ‚¬λΌμ§„λ‹€λŠ” κ²ƒμ΄μ—ˆμ£ ! 😭 μ‹€μ œ μ„œλΉ„μŠ€μ—μ„œλŠ” 데이터가 영ꡬ적으둜 μ €μž₯λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. μ‚¬μš©μžκ°€ μΆ”κ°€ν•œ ν•  일 λͺ©λ‘μ΄ μ„œλ²„ μž¬μ‹œμž‘κ³Ό 상관없이 μœ μ§€λ˜μ–΄μ•Ό ν•˜λ‹ˆκΉŒμš”.

이번 5λΆ€μ—μ„œλŠ” λ°”λ‘œ 이 데이터 영ꡬ μ €μž₯ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄, 우리의 FastAPI μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ **λ°μ΄ν„°λ² μ΄μŠ€(Database)**와 μ—°κ²°ν•˜λŠ” 방법을 λ°°μ›λ‹ˆλ‹€! 특히, Python μ½”λ“œμ™€ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ‚¬μ΄μ˜ 닀리 역할을 ν•΄μ£ΌλŠ” ORM(Object-Relational Mapper) 기술과, 파이썬 μƒνƒœκ³„μ—μ„œ κ°€μž₯ κ°•λ ₯ν•˜κ³  널리 μ“°μ΄λŠ” ORM 라이브러리인 SQLAlchemy에 λŒ€ν•΄ μ•Œμ•„λ³Ό κ±°μ˜ˆμš”.

이번 20κ°•μ—μ„œλŠ” 본격적인 μ½”λ“œ μž‘μ„±μ— μ•žμ„œ, μ™œ λ°μ΄ν„°λ² μ΄μŠ€κ°€ ν•„μš”ν•˜κ³  ORM은 무엇인지, 그리고 μš°λ¦¬κ°€ μ‚¬μš©ν•  SQLAlchemyλŠ” μ–΄λ–€ 도ꡬ인지 κ°œλ…μ„ ν™•μ‹€νžˆ 작고 κ°€λŠ” μ‹œκ°„μ„ κ°–κ² μŠ΅λ‹ˆλ‹€. 데이터 영ꡬ μ €μž₯의 μ„Έκ³„λ‘œ λ– λ‚  μ€€λΉ„, λ˜μ…¨λ‚˜μš”? πŸ’Ύβœ¨


πŸ“š 챕터 μ†Œκ°œ

이번 20강은 5λΆ€μ˜ μ‹œμž‘μœΌλ‘œ, FastAPI μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ— λ°μ΄ν„°λ² μ΄μŠ€ μ—°λ™μ˜ ν•„μš”μ„±μ„ 배우고 κ΄€λ ¨ 핡심 κ°œλ…λ“€μ„ μ†Œκ°œν•©λ‹ˆλ‹€. μ™œ 인메λͺ¨λ¦¬ μ €μž₯ 방식(Python λ”•μ…”λ„ˆλ¦¬ λ“±)λ§ŒμœΌλ‘œλŠ” λΆ€μ‘±ν•˜λ©°, 데이터λ₯Ό 영ꡬ적으둜 μ €μž₯ν•˜κΈ° μœ„ν•΄ λ°μ΄ν„°λ² μ΄μŠ€κ°€ ν•„μš”ν•œμ§€ μ•Œμ•„λ΄…λ‹ˆλ‹€.

λ‹€μ–‘ν•œ λ°μ΄ν„°λ² μ΄μŠ€ μ’…λ₯˜ 쀑 이 ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•  **κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(RDBMS)**λ₯Ό κ°„λž΅νžˆ μ†Œκ°œν•˜κ³ , 파이썬 객체 μ§€ν–₯ μ½”λ“œμ™€ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ˜ ν…Œμ΄λΈ” ꡬ쑰 μ‚¬μ΄μ˜ 간극을 λ©”μ›Œμ£ΌλŠ” ORM(Object-Relational Mapper) 기술의 κ°œλ…κ³Ό μž₯점을 μ„€λͺ…ν•©λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ, νŒŒμ΄μ¬μ—μ„œ κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” κ°•λ ₯ν•œ ORM 라이브러리인 SQLAlchemyλ₯Ό μ†Œκ°œν•˜κ³ , μ•žμœΌλ‘œ SQLAlchemyλ₯Ό μ‚¬μš©ν•˜μ—¬ μ–΄λ–»κ²Œ λ°μ΄ν„°λ² μ΄μŠ€μ™€ μƒν˜Έμž‘μš©ν•  것인지 κ°œκ΄„μ μΈ λ‘œλ“œλ§΅μ„ μ œμ‹œν•©λ‹ˆλ‹€. λ˜ν•œ, λ°μ΄ν„°λ² μ΄μŠ€ 연동에 ν•„μš”ν•œ μš”μ†Œλ“€(λ°μ΄ν„°λ² μ΄μŠ€ μ’…λ₯˜ 선택, λ“œλΌμ΄λ²„ μ„€μΉ˜, μ—°κ²° λ¬Έμžμ—΄ λ“±)에 λŒ€ν•΄μ„œλ„ μ•Œμ•„λ΄…λ‹ˆλ‹€.


🎯 챕터 λͺ©ν‘œ

이 κ°•μ˜λ₯Ό 마치면 μ—¬λŸ¬λΆ„μ€ λ‹€μŒμ„ ν•  수 있게 λ©λ‹ˆλ‹€:

  1. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ°μ΄ν„°μ˜ **영ꡬ μ €μž₯(Persistence)**을 μœ„ν•΄ λ°μ΄ν„°λ² μ΄μŠ€κ°€ ν•„μš”ν•œ 이유λ₯Ό μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  2. *κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€(RDBMS)**의 κΈ°λ³Έ κ°œλ…μ„ μ΄ν•΄ν•©λ‹ˆλ‹€. (NoSQLκ³Ό κ°„λž΅νžˆ 비ꡐ)
  3. **ORM(Object-Relational Mapper)**의 κ°œλ…κ³Ό μ‚¬μš© μ‹œμ˜ μž₯점(생산성, DB 독립성 λ“±)을 μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  4. 파이썬의 λŒ€ν‘œμ μΈ ORM 라이브러리인 SQLAlchemyλ₯Ό μΈμ§€ν•˜κ³ , κ·Έ 역할을 μ΄ν•΄ν•©λ‹ˆλ‹€.
  5. ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©ν•  λ°μ΄ν„°λ² μ΄μŠ€(SQLite, PostgreSQL)λ₯Ό μ‹λ³„ν•˜κ³ , 연동에 ν•„μš”ν•œ λ“œλΌμ΄λ²„ 및 **μ—°κ²° λ¬Έμžμ—΄(Database URL)**의 κ°œλ…μ„ μ΄ν•΄ν•©λ‹ˆλ‹€.

πŸ—οΈ 이번 κ°•μ˜μ—μ„œ 변경될 ν”„λ‘œμ νŠΈ ꡬ쑰 및 μ½”λ“œ (κ°œλ…)