안녕하세요. 이번 시간에는 field 단위로 동작하는 validator에 대해 알아보겠습니다. 먼저 아래 프로그램을 보겠습니다. x: int = Field(gt=5)라고 되어 있습니다. pydantic의 Field인데요. gt는 greater than의 약자입니다. 즉, 5보다 커야 된다는 조건이 있어야 합니다. 9번째 줄에는 custom validator를 작성하였는데요. "x"는 필드명을 의미합니다. 필드명 x에 대한 커스텀 벨리데이터 함수는 check_x를 의미해요. 1번째 인자는 cls, 2번째 인자는 v인데요. v는 실제로 check_x에 들어온 필드 x의 값을 의미합니다. 보통 이 v값을 검증해서, 조건에 맞지 않으면 ValueError를 떨어트리게 됩니다. pre=True라고 되어 있는데요...
전체 글 검색 결과
fastapi의 pydantic에는 validator가 있습니다. 이 중에는 전체 schema에 대해 검증을 하는 root_validator가 있습니다. 쉽게 이야기 하면, 필드 값들의 조합이 맞는지 검증하기 위해 주로 쓰입니다. 대표적인 예로 비밀번호 재설정의 경우, 필드 2개가 있을 겁니다. 보통, newPassword, checkNewPassword로 할 텐데요. 이 두 개가 같아야 하는 검증 조건을 추가해야 할 때 쓰여요. 두 개의 필드 값을 비교하고 있잖아요? 예제를 통해 어떻게 쓰는지 간단하게 알아보겠습니다. 먼저 router입니다. ResRequest 스키마를 받아서 처리를 해 주는 post /res가 있습니다. schema.py에 있는 ResRequest입니다. 정수를 받는 x와 y가 있습..
파이썬에는 한 줄을 입력받기 위한 함수로 sys.stdin의 readline만 있는 것이 아닙니다. 기본적으로 input()이라는 built in 함수를 제공합니다. 저 함수가 무엇인지 간단하게 알아보겠습니다. 먼저 1.txt에는 위와 같은 내용이 있습니다. 1 abcde, 그리고 2. 이렇게 2개의 줄이 있습니다. input 함수를 읽어봅시다. standard input (stdin)으로부터 string을 읽는다고 되어 있습니다. 그리고 개행 문자는 strip 된다고 되어 있습니다. 예제를 하나 보겠습니다. for loop로 5번 루프를 돌립니다. 각 loop마다 input()을 호출하고, 받은 문자열을 출력합니다. 입력을 1.txt에서 받아보겠습니다. 윈도우 powershell에서는 아직 redire..
파이썬에는 문자열을 입력받는 방법이 몇 가지 있습니다. 백준에서는 sys.stdin에 있는 readline을 많이 쓰는데요. 간단하게 알아보도록 하겠습니다. 먼저 python의 sys.stdin에 있는 readline은 한 줄씩 입력을 받는데요. 아무 것도 없는 경우에 빈 배열을 돌려줍니다. 만약에 한 줄에 아무 것도 없고 개행만 있는 경우에는, 개행이 있기 때문에 이야기가 달라집니다. 예제를 보겠습니다. 우리는 빈 배열이 리턴되면, 루프에서 빠져나가야 한다는 것을 알고 있습니다. while True: 로 계속 입력을 받습니다. 그런데 if not s: 이면 break를 겁니다. 배열의 경우 빈 배열일 때 해당 조건이 참이 되므로, 이 프로그램은 맞게 실행되는 것처럼 보입니다. 대부분의 백준 문제의 경우..
alembic으로 migration을 하다 보면 이상한 코드가 먼저 나옴을 알 수 있습니다. 마이그레이션 파일을 관리할 때 먼저 생성된 파일이 위에 오면 편할 겁니다. 어떻게 하면 좋을까요? 예를 들어, 0001_xxx, 0002_xxx 순으로 오게 하고 싶다면요? 그렇게 하면 버전 관리가 보다 편해질 겁니다. alembic revision --autogenerate -m "init_script"를 쳐 보겠습니다. 그러면 앞에 fbe53.. 이 생성됨을 볼 수 있습니다. 랜덤하게 생성된 문자열이기 때문에 보기가 영 편하지 않습니다. 문서를 보면, context의 configure의 process_revision_directives는 "revision" --autogenerate 옵션일 때 트리거가 된다고..
최근댓글