<aside>
</aside>
μλ νμΈμ! λ°μ΄ν°λ² μ΄μ€ μ°λ 5λΆμ λ λ²μ§Έ μκ°, 21κ°μ λλ€! π
μ§λ 20κ°μμλ μ λ°μ΄ν°λ² μ΄μ€κ° νμνκ³ , ORM(νΉν SQLAlchemy)μ΄ μ΄λ€ μν μ νλμ§μ λν ν° κ·Έλ¦Όμ κ·Έλ Έμ΅λλ€. μ΄μ μ΄λ‘ μ μΆ©λΆν μμμΌλ, μ§μ μ½λλ‘ λ°μ΄ν°λ² μ΄μ€μ 'μ€κ³λ'λ₯Ό κ·Έλ €λ³Ό μκ°μ λλ€!
μ΄λ² μκ°μλ SQLAlchemy ORM λͺ¨λΈμ μ μνλ λ°©λ²μ λ°°μλλ€. ORM λͺ¨λΈμ λ°μ΄ν°λ² μ΄μ€ **ν μ΄λΈ(Table)**μ ꡬ쑰λ₯Ό νμ΄μ¬ ν΄λμ€(Class) ννλ‘ ννν κ²μ λλ€. μ΄ ν΄λμ€λ₯Ό μ μν¨μΌλ‘μ¨ SQLAlchemyμκ² μ°λ¦¬κ° μ΄λ€ ν μ΄λΈμ λ§λ€κ³ μΆκ³ , κ·Έ ν μ΄λΈ μμ μ΄λ€ 컬λΌ(Column)λ€μ μ΄λ€ νμ κ³Ό μ μ½ μ‘°κ±΄μΌλ‘ λ§λ€κ³ μΆμμ§ μλ €μ€ μ μμ΅λλ€.
16κ°μμ Pydantic λͺ¨λΈλ‘ API λ°μ΄ν° ꡬ쑰λ₯Ό μ€κ³νλ κ²μ²λΌ, μ΄λ²μλ SQLAlchemy λͺ¨λΈλ‘ λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈ ꡬ쑰λ₯Ό μ€κ³νλ€κ³ μκ°νμλ©΄ λ©λλ€. μ, νμ΄μ¬ μ½λλ‘ λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈμ λ§λ€μ΄ λ³ΌκΉμ? π§±π
μ΄λ² 21κ°μμλ SQLAlchemy ORMμ μ¬μ©νμ¬ λ°μ΄ν°λ² μ΄μ€ **ν μ΄λΈμ λ§€νλ νμ΄μ¬ ν΄λμ€(λͺ¨λΈ)**λ₯Ό μ μνλ λ°©λ²μ λ°°μλλ€. ORMμ ν΅μ¬μ κ°μ²΄μ κ΄κ³(ν μ΄λΈ)λ₯Ό μ°κ²°νλ κ²μ΄λ©°, μ΄ λͺ¨λΈ ν΄λμ€ μ μκ° λ°λ‘ κ·Έ μ°κ²°μ μμμ λλ€.
λ¨Όμ , λͺ¨λ ORM λͺ¨λΈμ κΈ°λ°μ΄ λ **μ μΈμ λ² μ΄μ€(Declarative Base)**λ₯Ό μ€μ νλ λ°©λ²μ μμλ΄
λλ€. κ·Έλ¦¬κ³ μ΄ λ² μ΄μ€λ₯Ό μμλ°μ μ°λ¦¬μ Task
λͺ¨λΈ ν΄λμ€λ₯Ό μ μν©λλ€. ν΄λμ€ λ΄μμ __tablename__
μμ±μ μ¬μ©νμ¬ μ€μ λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈμ μ΄λ¦μ μ§μ νκ³ , κ° ν
μ΄λΈ 컬λΌ(Column)μ ν΄λΉνλ ν΄λμ€ μμ±μ μ μν©λλ€.
컬λΌμ μ μν λλ SQLAlchemyκ° μ 곡νλ μ»¬λΌ νμ
(Integer
, String
, Boolean
λ±)μ μ¬μ©νκ³ , μ μ½ μ‘°κ±΄(primary_key
, index
, nullable
, default
λ±)μ μ€μ νμ¬ ν
μ΄λΈ ꡬ쑰λ₯Ό μμΈνκ² λͺ
μνλ λ°©λ²μ μ€μ΅ν©λλ€. νΉν, μ΅μ SQLAlchemy 2.0 μ€νμΌμ νμ
ννΈ μΉνμ μΈ Mapped
μ mapped_column
μ μ¬μ©νμ¬ λͺ¨λΈμ μ μνλ λ°©λ²μ μ€μ μ μΌλ‘ λ€λ£Ήλλ€. λ§μ§λ§μΌλ‘, API λ°μ΄ν° ꡬ쑰λ₯Ό μ μνλ Pydantic λͺ¨λΈκ³Ό λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈ ꡬ쑰λ₯Ό μ μνλ SQLAlchemy λͺ¨λΈμ μν μ°¨μ΄λ₯Ό λͺ
νν ꡬλΆν©λλ€.
μ΄ κ°μλ₯Ό λ§μΉλ©΄ μ¬λ¬λΆμ λ€μμ ν μ μκ² λ©λλ€:
declarative_base
)**λ₯Ό μ€μ νκ³ μ΄λ₯Ό μμλ°μ λͺ¨λΈ ν΄λμ€λ₯Ό μ μν μ μμ΅λλ€.__tablename__
μμ±μ μ¬μ©νμ¬ λͺ¨λΈ ν΄λμ€μ λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈ μ΄λ¦μ λ§€νν μ μμ΅λλ€.Integer
, String
, Boolean
λ±)μ μ¬μ©νμ¬ ν
μ΄λΈ 컬λΌμ λ°μ΄ν° νμ
μ μ§μ ν μ μμ΅λλ€. (μ΅μ Mapped
/mapped_column
μ€νμΌ νμ©)primary_key
, index
, nullable
, default
λ± μ»¬λΌ μ μ½ μ‘°κ±΄μ μ€μ ν μ μμ΅λλ€.