SQLModel/SQLAlchemy Проблема с сопоставителем модели при запросе в пустых таблицахPython

Программы на Python
Ответить
Anonymous
 SQLModel/SQLAlchemy Проблема с сопоставителем модели при запросе в пустых таблицах

Сообщение Anonymous »


Я относительно новичок в SQLModel и SQLAlchemy, однако не могу разобраться в этом.

В основном проблема: используя SQLite в качестве базы данных, у меня есть таблица configs, которая содержит 3 UUID для разных подконфигураций (сервер, пользователь и бизнес), все в отдельных таблицах. Я объявляю модели следующим образом:

class ServerConfigBase(SQLModel): """Базовая конфигурация сервера.""" адрес: ул. порт: интервал app_configs: List["Config"] = Связь(back_populates="server") класс ServerConfig (ServerConfigBase, таблица = True): """Конфигурационная модель, описывающая поля сетевых коммуникаций""" идентификатор: Необязательно [UUID] = Поле (по умолчанию = Нет, Primary_key = True) класс BusinessConfigBase(SQLModel): """Базовая бизнес-конфигурация.""" ... app_configs: List["Config"] = Связь(back_populates="business") класс BusinessConfig (BusinessConfigBase, таблица = True): """Модель конфигурации, описывающая поля, связанные с бизнесом""" идентификатор: Необязательно [UUID] = Поле (по умолчанию = Нет, Primary_key = True) класс UserConfigBase(SQLModel): """Базовая конфигурация пользователя.""" имя: ул. app_configs: List["Config"] = Связь(back_populates="user") класс UserConfig (UserConfigBase, таблица = True): """Модель конфигурации, описывающая поля, настраиваемые пользователем""" идентификатор: Необязательно [UUID] = Поле (по умолчанию = Нет, Primary_key = True) класс ConfigBase(SQLModel): """Базовая конфигурация.""" сервер: ServerConfig = Связь(back_populates="app_configs") server_conf_id: UUID = Поле (foreign_key=ServerConfig.id) бизнес: BusinessConfig = Связь(back_populates="app_configs") business_conf_id: UUID = Поле (foreign_key=BusinessConfig.id) пользователь: UserConfig = Связь(back_populates="app_configs") user_conf_id: UUID = Поле (foreign_key=UserConfig.id) Random_list_of_string_field: List[Dict] = Field(sa_column=Column(JSON[List[Dict]])) класс Config (ConfigBase, таблица = True): """Конфигурация таблицы.""" идентификатор: Необязательно [UUID] = Поле (по умолчанию = Нет, Primary_key = True) активно: bool = Ложь Когда я проверяю при запуске, существует ли активная конфигурация через session.exec(select(Config).where(Config.active == True)).first() (в случае наличия базы данных файл уже заполнен) я получаю следующую ошибку:

sqlalchemy.exc.UnboundExecutionError: не удалось найти привязку, настроенную в сопоставленном классе Config->config, выражении SQL или этом сеансе. То же самое произойдет, если я просто выберу все на столе. Не знаю, почему моя модель отображается неправильно. Трассировка стека:

Файл "/Users/somaf/repos/api/src/api/controllers/config.py", строка 91, в read_configs вернуть session.exec(select(Config)).all() Файл «/Users/somaf/repos/api/.venv/lib/python3.9/site-packages/sqlmodel/orm/session.py», строка 60, в exec результаты = супер().execute( Файл "/Users/somaf/repos/api/.venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py", строка 1705, выполняется привязка = self.get_bind(**bind_arguments) Файл «/Users/somaf/repos/api/.venv/lib/python3.9/site-packages/sqlalchemy/orm/session.py», строка 2154, в get_bind поднять sa_exc.UnboundExecutionError( sqlalchemy.exc.UnboundExecutionError: не удалось найти привязку, настроенную для сопоставленного класса Config->config, выражения SQL или этого сеанса. Я не забыл создать таблицы, да и сессия настроена правильно. Будем очень признательны за любую помощь и извините, если это нубский вопрос.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»