<aside>
</aside>
μλ νμΈμ! λλμ΄ 5λΆμ λ§μ§λ§ μ£Όμ , λ°μ΄ν°λ² μ΄μ€ λ§μ΄κ·Έλ μ΄μ μ λ€λ£° μκ°μ λλ€! 24κ°μ μ€μ κ²μ νμν©λλ€. π
μννΈμ¨μ΄λ μ΄μμλ μ 기체μ κ°μμ, μκ°μ΄ μ§λλ©΄μ λ³ννκΈ° λ§λ ¨μ λλ€. μλ‘μ΄ κΈ°λ₯μ΄ μΆκ°λκ±°λ κΈ°μ‘΄ κΈ°λ₯μ΄ λ³κ²½λλ©΄μ λ°μ΄ν°λ² μ΄μ€μ ꡬ쑰, μ¦ **μ€ν€λ§(Schema)**λ ν¨κ» λ³κ²½ν΄μΌ ν λκ° μ΅λλ€. μλ₯Ό λ€μ΄, Task λͺ¨λΈμ 'λ§κ°μΌ(due_date)' νλλ₯Ό μΆκ°νκ±°λ, 'μ¬μ©μ(User)' ν μ΄λΈμ μλ‘ λ§λ€μ΄μΌ ν μλ μμ£ .
μ΄λ΄ λ μ΄λ»κ² ν΄μΌ ν κΉμ? 21κ°μμ λ°°μ΄ Base.metadata.create_all()
μ μ΄λ―Έ μ‘΄μ¬νλ ν
μ΄λΈμ μμ ν΄μ£Όμ§ λͺ»νκ³ , μ§μ λ°μ΄ν°λ² μ΄μ€μ μ μν΄μ ALTER TABLE
κ°μ SQL λͺ
λ Ήμ΄λ₯Ό μ€ννλ κ²μ μ€μνκΈ° μ½κ³ λ³κ²½ μ΄λ ₯μ κ΄λ¦¬νκΈ°λ μ΄λ ΅μ΅λλ€. π₯
μ΄λ² μκ°μλ μ΄λ κ² λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§κ° λ³κ²½λ λ, μ΄λ₯Ό μμ νκ³ μ²΄κ³μ μΌλ‘ κ΄λ¦¬νλ λ°©λ²μΈ **λ°μ΄ν°λ² μ΄μ€ λ§μ΄κ·Έλ μ΄μ (Database Migration)**μ κ°λ μ μκ°νκ³ , SQLAlchemyμ νμμ κΆν©μ μλνλ λ§μ΄κ·Έλ μ΄μ λκ΅¬μΈ Alembicμ μ°λ¦¬ νλ‘μ νΈμ λμ νλ 첫걸μμ λ΄λκ² μ΅λλ€! λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§μ λ²μ κ΄λ¦¬, μμν΄λ³ΌκΉμ? ππ
μ΄λ² 24κ°μμλ μ ν리μΌμ΄μ
κ°λ° κ³Όμ μμ λ°μνλ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§ λ³κ²½μ κ΄λ¦¬νλ κ²μ΄ μ μ€μνλ©°, μ΄κ²μ΄ μ μ΄λ €μ΄ λ¬Έμ μΈμ§ μμλ΄
λλ€. λ¨μν SQLAlchemy λͺ¨λΈ μ½λλ§ μμ νλ€κ³ ν΄μ μ€μ λ°μ΄ν°λ² μ΄μ€ ν
μ΄λΈ κ΅¬μ‘°κ° μλμΌλ‘ λ°λμ§ μμΌλ©°, Base.metadata.create_all()
μ νκ³μ μλ μ€ν€λ§ λ³κ²½μ μνμ±μ μ΄ν΄λ΄
λλ€.
μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν λ°μ΄ν°λ² μ΄μ€ λ§μ΄κ·Έλ μ΄μ μ κ°λ μ μκ°ν©λλ€. λ§μ΄κ·Έλ μ΄μ μ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§ λ³κ²½ μ¬νμ λ²μ λ³λ‘ κ΄λ¦¬λλ μ€ν¬λ¦½νΈλ‘ λ§λ€κ³ , μ΄λ₯Ό μμ°¨μ μΌλ‘ μ μ©νμ¬ λ°μ΄ν°λ² μ΄μ€λ₯Ό μνλ μνλ‘ μμ νκ² μ λ°μ΄νΈνλ νλ‘μΈμ€μ λλ€. λ§μΉ μ½λ λ³κ²½ μ¬νμ κ΄λ¦¬νλ Gitκ³Ό μ μ¬νκ², λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§μ λ³κ²½ μ΄λ ₯μ κ΄λ¦¬νλ κ²μ΄λΌκ³ μκ°ν μ μμ΅λλ€.
κ·Έλ¦¬κ³ Python SQLAlchemy μνκ³μμ νμ€μ²λΌ μ¬μ©λλ κ°λ ₯ν λ°μ΄ν°λ² μ΄μ€ λ§μ΄κ·Έλ μ΄μ
λκ΅¬μΈ Alembicμ μκ°ν©λλ€. Alembicμ΄ SQLAlchemy λͺ¨λΈκ³Ό μ΄λ»κ² μ°λλμ΄ μ€ν€λ§ λ³κ²½μ κ°μ§νκ³ λ§μ΄κ·Έλ μ΄μ
μ€ν¬λ¦½νΈλ₯Ό μμ±νλ λ° λμμ μ£Όλμ§ μμλ΄
λλ€. λ§μ§λ§μΌλ‘, μ°λ¦¬ νλ‘μ νΈμ Alembicμ μ€μΉνκ³ alembic init
λͺ
λ Ήμ μ¬μ©νμ¬ λ§μ΄κ·Έλ μ΄μ
νκ²½μ μ΄κΈ° μ€μ νλ λ°©λ²μ μ€μ΅νλ©°, μμ±λλ μ£Όμ νμΌ(alembic.ini
, env.py
)κ³Ό λλ ν 리(versions/
)μ μν μ λν΄ κ°λ΅ν μ΄ν΄λ΄
λλ€.
μ΄ κ°μλ₯Ό λ§μΉλ©΄ μ¬λ¬λΆμ λ€μμ ν μ μκ² λ©λλ€:
pip
λ₯Ό μ¬μ©νμ¬ Alembicμ μ€μΉν μ μμ΅λλ€.alembic init
λͺ
λ Ήμ μ¬μ©νμ¬ νλ‘μ νΈμ Alembic λ§μ΄κ·Έλ μ΄μ
νκ²½μ μ΄κΈ°νν μ μμ΅λλ€.alembic.ini
, env.py
)κ³Ό λ²μ μ€ν¬λ¦½νΈ λλ ν 리(versions/
)μ κΈ°λ³Έμ μΈ μν μ μ΄ν΄ν©λλ€.