2. 기본키 id
기본키는 사실상 표준처럼 사용하는 이름인 id 이름이며, Field() 함수에 primary_key 인자를 True로 지정하여 기본키 모델 필드를 정의합니다(②). 이 중 기본값(default)을 None으로 지정한 부분을 눈여겨보세요. 자료형 각주에서는 None 조합 없이 int로 지정했는데, 모델 필드의 기본값은 None으로 지정한 것이 이상하지요? 값을 따로 지정하지 않는다면 id 모델 필드 값은 기본값인 None이 됩니다.
이것은 Pydantic의 데이터 모델이자 SQLAlchemy ORM 모델이기 때문에 그렇습니다. SQLAlchemy ORM 모델의 인스턴스 객체는 데이터베이스에서 데이터를 가져오기 전에는 id 모델 필드 값이 없습니다. 그래서 id 값이 None일 수 있다는 점은 자연스럽습니다. 그에 반해 Pydantic 모델은 데이터베이스와 무관합니다. 게다가 Pydantic의 역할은 데이터 유효성을 검증하는 것입니다. id 모델 필드의 자료형 각주를 int로 하면 int 값이 주어져야 합니다. 하지만 데이터 모델로서 id 값처럼 데이터베이스에서 생성해 주는 값을 제외한 나머지 모델 필드 값에 대해서는 유효성을 검증해야 할 일이 많습니다.
‘값 없음’이라는 맥락으로 자료형 각주에는 실제 자료형을 선언하고, 모델 필드를 Field() 함수로 정의할 때 기본값으로 None을 사용한 것입니다. Pydantic은 자료형 각주에 Optional이나 None이 없더라도 기본값을 참고하여 모델 필드를 정의합니다.