안녕하세요. 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이므로 반드시 필..
웹 검색 결과
다른 사람과 협업을 할 때, 충돌이 나는 경우가 적지 않게 있습니다. migration도 마찬가지입니다. 이러한 경우를 대비해서, 마이그레이션을 merge 할 수 있는 방법이 alembic에도 있습니다. 1.9.1 버전으로 실습하였으니 참고 부탁드립니다. 먼저, test1 브랜치에서, table a에 revision을 추가한 상태입니다. 다음에, test2 브랜치에서는 table b에 revision을 추가한 상태입니다. 마이그레이션이 충돌이 났습니다? 충돌이 났다는 의미는 여러 head가 있다는 의미입니다. branch가 여러 개 있다는 것입니다. 현재 제 상황입니다. merge를 했더니, 0002가 2개 들어온 상황입니다. 왠지 충돌이 일어난 듯 합니다? alembic branches 명령어를 입력해..
안녕하세요. 이번 시간에는 django의 Filefield들에 쓰는 upload_to에 대해 간단하게 알아보겠습니다. 문서도 같이 보면 좋겠습니다. 먼저, item_file_path 함수를 보겠습니다. instance와 filename 2개를 받습니다. instance는 생성된 레코드의 id입니다. 그리고, filename은 파일의 이름을 의미합니다. 문서의 표를 참고하시면 됩니다. 이 두 정보를 받아서 리턴하는 값은 item/{레코드_id}/{파일이름}이 됩니다. 다음 11번째 줄입니다. id와 file을 입력으로 받습니다. id라는 필드를 추가해 주었는데요. 왜 추가했는지는 밑에서 후술하겠습니다. 이제, 파일을 업로드 해 보겠습니다. 파일 선택을 한 다음에 SAVE를 눌러보겠습니다. 데이터베이스에 저..
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..
최근댓글