<aside>
</aside>
์๋ ํ์ธ์! ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ 5๋ถ์ ๋ค ๋ฒ์งธ ์๊ฐ, 25๊ฐ์ ๋๋ค! ๐ง
์ง๋ 24๊ฐ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ๋ณ๊ฒฝ ๊ด๋ฆฌ์ ํ์์ฑ์ ๋๋ผ๊ณ , SQLAlchemy๋ฅผ ์ํ ๋ง์ด๊ทธ๋ ์ด์
๋๊ตฌ์ธ Alembic์ ์ฐ๋ฆฌ ํ๋ก์ ํธ์ ์๊ฐํ๋ฉฐ ์ด๊ธฐ ํ๊ฒฝ ์ค์ (alembic init
)๊น์ง ๋ง์ณค์ต๋๋ค. ์ด์ ํ๋ก์ ํธ ํด๋์๋ alembic.ini
ํ์ผ๊ณผ alembic/
๋๋ ํ ๋ฆฌ๊ฐ ์๊ฒผ์ฃ !
ํ์ง๋ง ์์ง Alembic์ด ์ฐ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ณ , ์ฐ๋ฆฌ๊ฐ ์ ์ํ SQLAlchemy ๋ชจ๋ธ(Task
)์ ์ธ์ํ๋๋ก ์ค์ ์ ์๋ฃํ์ง๋ ์์์ต๋๋ค. ์ด๋ฒ ์๊ฐ์๋ Alembic ์ค์ ํ์ผ๋ค(alembic.ini
, env.py
)์ ์ง์ ์์ ํ์ฌ ์ฐ๋ฆฌ ํ๋ก์ ํธ ํ๊ฒฝ์ ๋ง๊ฒ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋์ด! ์ค์ ๋ Alembic ํ๊ฒฝ์ ์ฌ์ฉํ์ฌ, ์ฐ๋ฆฌ๊ฐ 21๊ฐ์์ ์ ์ํ๋ Task
๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ์ฒซ ๋ฒ์งธ ๋ง์ด๊ทธ๋ ์ด์
์คํฌ๋ฆฝํธ๋ฅผ ์๋์ผ๋ก ์์ฑํ๊ณ , ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํ์ฌ tasks
ํ
์ด๋ธ์ ๋ง๋๋ ๋ง๋ฒ ๊ฐ์ ๊ณผ์ ์ ์ง์ ๊ฒฝํํด ๋ณผ ๊ฑฐ์์! โจ
์, ์ด์ Alembic ์ค์ ์ ์๋ฃํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฒซ ํ ์ด๋ธ์ ๋ง๋ค์ด ๋ด ์๋ค!
์ด๋ฒ 25๊ฐ์์๋ 24๊ฐ์์ ์ด๊ธฐํํ Alembic ๋ง์ด๊ทธ๋ ์ด์
ํ๊ฒฝ์ ์ค์ ๋ก ์๋ํ๋๋ก ์ค์ ํ๋ ๊ณผ์ ์ ๋ค๋ฃน๋๋ค. ๋จผ์ , alembic.ini
์ค์ ํ์ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ URL์ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ํฉ๋๋ค. ๊ทธ ๋ค์, ํต์ฌ ์ค์ ํ์ผ์ธ alembic/env.py
๋ฅผ ์์ ํ์ฌ Alembic์ด ์ฐ๋ฆฌ์ **SQLAlchemy ๋ชจ๋ธ ๋ฉํ๋ฐ์ดํฐ(Base.metadata
)**๋ฅผ ์ธ์ํ๊ณ , FastAPI์ ๋น๋๊ธฐ(async) ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๊ฒฝ์์ ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋๋ก ๊ตฌ์ฑํฉ๋๋ค.
์ค์ ์ด ์๋ฃ๋๋ฉด, alembic revision --autogenerate
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฌ ์ ์๋ SQLAlchemy ๋ชจ๋ธ(Task
) ์ํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฒซ ๋ฒ์งธ ๋ง์ด๊ทธ๋ ์ด์
์คํฌ๋ฆฝํธ (์ฆ, tasks
ํ
์ด๋ธ์ ์์ฑํ๋ ์คํฌ๋ฆฝํธ)๋ฅผ ์๋์ผ๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค์ตํฉ๋๋ค. ์์ฑ๋ ์คํฌ๋ฆฝํธ์ ๋ด์ฉ์ ๊ฐ๋จํ ์ดํด๋ณด๊ณ , ๋ง์ง๋ง์ผ๋ก alembic upgrade head
๋ช
๋ น์ด๋ฅผ ์คํํ์ฌ ์ด ๋ง์ด๊ทธ๋ ์ด์
์คํฌ๋ฆฝํธ๋ฅผ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํจ์ผ๋ก์จ tasks
ํ
์ด๋ธ์ด ์์ฑ๋๋ ๊ฒ์ ํ์ธํฉ๋๋ค.
์ด ๊ฐ์๋ฅผ ๋ง์น๋ฉด ์ฌ๋ฌ๋ถ์ ๋ค์์ ํ ์ ์๊ฒ ๋ฉ๋๋ค:
alembic.ini
ํ์ผ์ **๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ URL(sqlalchemy.url
)**์ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ ์ ์์ต๋๋ค.alembic/env.py
ํ์ผ์ ์์ ํ์ฌ SQLAlchemy **๋ชจ๋ธ ๋ฉํ๋ฐ์ดํฐ(Base.metadata
)**๋ฅผ Alembic์ ์ธ์์ํค๊ณ , ๋น๋๊ธฐ(async) ํ๊ฒฝ ์ค์ ์ ์ ์ฉํ ์ ์์ต๋๋ค.alembic revision --autogenerate
๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ๊ธฐ๋ฐ์ ๋ง์ด๊ทธ๋ ์ด์
์คํฌ๋ฆฝํธ๋ฅผ ์๋์ผ๋ก ์์ฑํ ์ ์์ต๋๋ค.upgrade
, downgrade
ํจ์)๋ฅผ ์ดํดํฉ๋๋ค.alembic upgrade head
๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๋ง์ด๊ทธ๋ ์ด์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉํ๊ณ ํ
์ด๋ธ์ ์์ฑํ ์ ์์ต๋๋ค.