안녕하세요. fastapi에서 query, path, body 필드는 생각보다 많이 쓸 겁니다. 이번 시간에는 fastapi에서 Query parameter를 어떻게 쓰는지 몇 가지 예제를 통해 간단하게 배워보겠습니다. main.py입니다. read_root 함수에, keyword: str이라고 적었습니다. path에 있지도 않기 때문에, keyword는 Query 파라미터로 인식됩니다. docs를 보겠습니다. name이 keyword인 query가 있습니다. 그런데 옆에 required가 붙어 있습니다. 이는 없으면 안 된다는 의미입니다. 즉, keyword: str로 선언하면, Query parameter keyword는 string으로 받는 것을 기대합니다. 그리고, required이므로 반드시 필..
웹/FASTAPI 검색 결과
다른 사람과 협업을 할 때, 충돌이 나는 경우가 적지 않게 있습니다. migration도 마찬가지입니다. 이러한 경우를 대비해서, 마이그레이션을 merge 할 수 있는 방법이 alembic에도 있습니다. 1.9.1 버전으로 실습하였으니 참고 부탁드립니다. 먼저, test1 브랜치에서, table a에 revision을 추가한 상태입니다. 다음에, test2 브랜치에서는 table b에 revision을 추가한 상태입니다. 마이그레이션이 충돌이 났습니다? 충돌이 났다는 의미는 여러 head가 있다는 의미입니다. branch가 여러 개 있다는 것입니다. 현재 제 상황입니다. merge를 했더니, 0002가 2개 들어온 상황입니다. 왠지 충돌이 일어난 듯 합니다? alembic branches 명령어를 입력해..
fastapi에서 model 여러개를 하나의 모델 파일에 정의하는 것은 그렇게 좋지 못한 듯 합니다. 너무 길어지고, 한 파일에 책임이 너무나도 많기 때문입니다. 도메인에 따라, 혹은 역할에 따라 분리하는 것이 필요한데요. 그렇다는 것은 여러 개의 파일로 분리해야 한다는 것을 의미해요. alembic에서 multiple target metadata를 인식하게 하는 방법을 알아봅시다. alembic 1.9.2 기준으로 실습했음을 미리 알려드립니다. 먼저 프로젝트의 구조입니다. models 안에 __init__.py와 model_a.py, model_b.py가 있습니다. 다음에, env.py가 있습니다. 저는 이 4개의 파일만 건드릴 겁니다. 먼저, model_a.py입니다. a_base에 모델 a가 연관되..
장고에서 모델 column 속성을 바꿀 일이 제법 있었습니다. 그 중, varchar의 길이를 조절하는 것도 적지 않았습니다. 그런데, 따로 alembic에서 설정을 해 주지 않으면, String의 길이가 바뀐 것을 detect 하지 않습니다. 그래서, 당황할 수 있는데요. 어떻게 해결할 수 있는지 문서를 통해서 보도록 하겠습니다. 1.9.1 버전 기준으로 작성되었으니 참고 부탁드립니다. 먼저, 길이 제한이 200인 review 컬럼을 추가합니다. alembic으로 autogenerate 옵션을 주어서 마이그레이션 파일을 만들면, 아래와 같은 파일이 생성됩니다. 이는, alembic에서 컬럼이 추가되면 change detect를 했다는 의미입니다. 이는 문서의 Autogenerate will detect..
장고에서는 makemigrate와 migration으로 디비 스키마 구조가 바뀌었을 때 즉시 변경해서 배포할 수 있었습니다. fastapi에는 그런 기능이 없을까요? 검색해 보니 alembic 이라는 것이 있었는데요. 간단하게 세팅을 마쳐보도록 하겠습니다. 먼저 실습이 완료된 프로젝트 구조부터 보고 가겠습니다. 루트에 models.py, Dockerfile, docker-compose.yml, .dockerignore, requirements.txt, alembic.ini가 있습니다. 그리고 ddl, migrates, app 패키지가 있는 구조입니다. migrates 안에 어떤 것이 있는지 보겠습니다. versions를 담은 정보와 env.py, README, script.py.mako가 있습니다. ve..
최근댓글