๐ Backend16 [FastAPI] SQLModel 1. SQLModel์ด๋?๊ธฐ์กด Python SQL ORM ๊ตฌํ์ฒด์ธ SQLAlchemy์ ๊ฒ์ฆ ํจํค์ง Pydantic์ ๊ฒฐํฉํ Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ๋ณด๋ค ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ผ๋ก ์ํํ ์ ์๋ค.SQLAlchemy์ ORM ๊ธฐ๋ฅ์ ์ ์งํ๋ฉด์๋ Pydantic์ ๋ฐ์ดํฐ ๊ฒ์ฆ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฒ์ด ํน์ง์ด๋ค. 2. SQLAlchemy vs SQLModelSQLAlchemy๋ ๋ ๊ฐ์ง ์ฃผ์ API ์คํ์ผ์ ์ ๊ณตํ๋ค.SQLAlchemy Core: ์ ์์ค SQL ํํ์ ์ฌ์ฉํ์ฌ SQL์ ์ง์ ๋ค๋ฃฐ ์ ์๋๋ก ์ค๊ณ๋จSQLAlchemy ORM: ๊ฐ์ฒด-๊ด๊ณ ๋งคํ(Object-Relational Mapping)์ ํตํด Python ํด๋์ค๋ก DB ๋ชจ๋ธ์ ๋ค๋ฃฐ ์ ์์SQLModel์ SQLAlchemy .. 2025. 3. 14. [FastAPI] Best Practices - Project Structure Project StructureFastAPI ํ๋ก์ ํธ ๊ตฌ์กฐ ์ค๊ณ ํ ๋ ์ฐธ๊ณ ํ๊ธฐ ์ข๋ค.Netflaix/Dipatch๋ฅผ ์ฐธ์กฐํ์ฌ ์์ ํ ์๋ฃ์ด๋ค.fastapi-projectโโโ alembic/โโโ app # ์๋ณธ์ src ์ด์ง๋ง ๋ณธ์ธ์ app ์ ํธํจ.โ โโโ authโ โ โโโ router.pyโ โ โโโ schemas.py # pydantic modelsโ โ โโโ models.py # db modelsโ โ โโโ dependencies.pyโ โ โโโ config.py # local configsโ โ โโโ constants.pyโ โ โโโ exceptions.pyโ โ โโโ service.pyโ โ โโโ ut.. 2025. 2. 14. [SQL] SELECT ๊ด๋ จ ํจ์ ์ง๊ณ ํจ์ (Aggregate Functions)AVG(): ํ๊ท ๊ฐ ๊ณ์ฐSUM(): ํฉ๊ณ ๊ตฌํ๊ธฐCOUNT(): ์ ์ฒด ํ ๊ฐ์COUNT(*): ๋ชจ๋ ํ์ ๊ฐ์COUNT(์ปฌ๋ผ๋ช ): NULL์ด ์๋ ๊ฐ์ ๊ฐ์MAX() / MIN(): ์ต๋๊ฐ๊ณผ ์ต์๊ฐGROUP_CONCAT(): ๋ฌธ์์ด ํฉ์น๊ธฐROUND() / CEIL() / FLOOR(): ๋ฐ์ฌ๋ฆผ, ์ฌ๋ฆผ, ๋ด๋ฆผ ๋๋ฒ์งธ ์ธ์๋ก ์ด๋ ์๋ฆฌ๊น์ง ํํ ์ ํจTRUNCATE(): ์ง์ ํ ์๋ฆฌ์๊น์ง ๋ฒ๋ฆผ์์ N๊ฐ ๋ฐ์ดํฐ ์ถ์ถ (LIMIT)LIMIT N: ๊ฒฐ๊ณผ์์ ์์ N๊ฐ๋ง ์ถ๋ ฅ ๋ ์ง ๋ค๋ฃจ๊ธฐ# ๋ ์ง ๋ฒ์ ์กฐํWHERE JOINED BETWEEN '2021-01-01' AND '2021-12-31'๋๋WHERE YEAR(JOINED) = 2021 # ๋ ์ง ํฌ๋งท ๋ณ๊ฒฝDATE_F.. 2025. 2. 5. [Security] ์คํ๋ง ์ํ๋ฆฌํฐ Spring Security์ธ์ฆ(Authentication), ๊ถํ ๋ถ์ฌ(Authorize) ๋ฐ ๋ณดํธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๋ ์์ํฌ 2024. 2. 27. [Spring Basic] ์คํ๋ง ์ฑ๊ธํค ์ฑ๊ธํค ํจํด ํด๋์ค์ ์ธ์คํด์ค๊ฐ 1๊ฐ๋ง ์๋ ๊ฒ์ ๋ณด์ฅํ๋ ๋์์ธ ํจํด package hello.core.singleton; public class SingletonService { //1. static ์์ญ์ ๊ฐ์ฒด๋ฅผ ๋ฑ 1๊ฐ๋ง ์์ฑํด๋๋ค. private static final SingletonService instance = new SingletonService(); //2. public์ผ๋ก ์ด์ด์ ๊ฐ์ฒด ์ธ์คํด์ค๊ฐ ํ์ํ๋ฉด ์ด static ๋ฉ์๋๋ฅผ ํตํด์๋ง ์กฐํํ๋๋ก ํ์ฉํ๋ค. public static SingletonService getInstance() { return instance; } //3. ์์ฑ์๋ฅผ private์ผ๋ก ์ ์ธํด์ ์ธ๋ถ์์ new ํค์๋๋ฅผ ์ฌ์ฉํ ๊ฐ์ฒด ์์ฑ์ ๋ชปํ๊ฒ ๋ง๋๋ค. pr.. 2024. 1. 18. [Spring Basic] ์คํ๋ง ์ปจํ ์ด๋์ ๋น ์คํ๋ง ์ปจํ ์ด๋ /์คํ๋ง ์ปจํ ์ด๋ ์์ฑ ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext ๊ฐ ๋ฐ๋ก ์คํ๋ง ์ปจํ ์ด๋์ด๋ค ๊ณ ์ด๊ณ ์ด ์ ๋ณด๋ฅผ ๋ชจ์์ ์ด๋ฅผ ์คํ๋ง์์ ์ฌ์ฉํ๋ ์คํ๋ง ๋น ํํ๋ก ์ปจํ ์ด๋์์ ๊ด๋ฆฌํ๋ค. ํํ ๋งํ๋ BeanFactory๋ ์ด๋ฐ ApplicationContext์ ์ต์์ ์ธํฐํ์ด์ค์ด๋ค. ํ์ง๋ง ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ํด ์ฃผ๋ก AnnotationConfig, ApplicationContext๋ฅผ ์ฌ์ฉํ๋ค. locale, ํ๊ฒฝ ๋ณ์, ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฒคํธ, ๋ ๋์ ๋ฆฌ์์ค ์กฐํ ๋ฑ๋ฑ... ์คํ๋ง ๋น ๊ทธ๋ ๋ค๋ฉด Bean ์ด๋ ๋ฌด์์ธ๊ฐ? ๊ทธ๋ฌ๋ฉด์ .. 2024. 1. 18. ์ด์ 1 2 3 ๋ค์