Как хранить INI параметры из бд в pydantic BaseSettings

Было решено хранить ini параметры в бд, т.к. их много и они постоянно изменяются Вопрос: как их записать в pydantic BaseSettings, в котором уже хранятся данные для конекта. Получается так, что для создание сессий sqlalchemy нужны параметры коннекта. А для получения данных из таблицы с ini нужна сессия.

from pydantic_settings import BaseSettings
from pydantic import Field
from dotenv import load_dotenv
from sqlalchemy import func
from sqlalchemy.orm import Session

from app.db import SessionLocal

load_dotenv()


class Setting(BaseSettings):

    db_user: str = Field(..., env="DB_USER")
    db_password: str = Field(..., env="DB_PASSWORD")
    db_host: str = Field(..., env="DB_HOST")
    db_port: int = Field(..., env="DB_PORT")
    db_name: str = Field(..., env="DB_NAME")

    id_norm_for_course: list[str]

    @property
    def db_url(self) -> str:
        return f"oracle+oracledb://{self.db_user}:{self.db_password}@{self.db_host}:{self.db_port}/?service_name={self.db_name}"

    @property
    def id_norm_for_course(self) -> list[str]:
        try:
            if not hasattr(self, "_id_norm_for_course"):
                res: str = SessionLocal().query(func.GET_INIT_PARAM('OPT_NUM_COURSE')).scalar()
                return res.replace(" ", "").split(',')
            return self._id_norm_for_course
        except Exception as err:
            raise err

ошибка:

ImportError: cannot import name 'setting' from partially initialized module 'app.core.config' (most likely due to a circular import)

Ответы (0 шт):