728x90

BaseSettings

BaseSettings는 Pydantic에서 설정을 정의하기 위한 기본 클래스

기본적으로 이름이 지정된 환경 변수를 읽어와서 설정값을 자동으로 설정

이 클래스는 Pydantic 라이브러리의 일부로서 설정값의 유효성을 검사하고 기본값을 지정할 수 있는 기능을 제공

from pydantic import BaseSettings

class Settings(BaseSettings):
    DATABASE_URL: str
    API_KEY: str = "default_key"

settings = Settings()

 

BaseSettings는 설정 초기화 시 여러가지 기본 설정들이 있음

 예를 들어 기본적으로 대소문자 구분을 하지 않아 설정 클래스의 필드명이 data_base_url 이라면, DATABASE_URL이라는 이름의 환경 변수를 자동으로 찾아 해당 값을 읽어와 설정

또는 환경변수를 파일로 관리하는 경우 환경변수 파일 경로를 설정할 필요가 있음

이런 기본 설정은 SettingsConfigDict를 이용하여 설정 가능함 (하단 SettingConfigDict 참고)

 

SettingsConfigDict

SettingsConfigDict는 설정을 딕셔너리 형태로 관리하기 위한 클래스로, 설정 초기화 옵션을 재정의 하는 데 사용

일반적으로 BaseSettings와 함께 사용하며,  BaseSettings를 상속받은 설정은 자동으로 SettingsConfigDict가 인식

from pydantic_settings import BaseSettings, SettingsConfigDict

import os
os.environ["DATABASE_URL"] = "db_url"
os.environ["TEST_DATABASE_URL"] = "test_db_url"
os.environ["API_KEY"] = "default"
os.environ["TEST_API_KEY"] = "test"

class Settings(BaseSettings):
    DATABASE_URL: str
    API_KEY: str = "lower_case"
    model_config = SettingsConfigDict(
        case_sensitive=True, 
        env_prefix='TEST_', 
        env_file='.env', 
        env_file_encoding='utf-8')

settings = Settings()

print(settings.DATABASE_URL) # result : test_db_url
print(settings.API_KEY) # result : test

 

  • case_sensitive : 설정을 딕셔너리로 관리할 때 대소문자를 구분하도록 설정하는 옵션 (기본값 : False)
  • validate_default : 필드 기본값에 대한 밸리데이션 여부를 설정하는 옵션 (기본값 : False)
  • env_prefix : 환경변수의 접두사를 설정 가능  (기본값 : null)
  • env_file : 환경변수 설정파일 지정하는 옵션
  • env_file_encoding : 환경변수 설정파일 인코딩 지정하는 옵션

참고

Pydantic Settings 설정 방법 docs : https://docs.pydantic.dev/latest/concepts/pydantic_settings/

728x90

+ Recent posts