SQLAlchemy добавляет дочерний элемент к родительскому: столбец отношений не созданPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 SQLAlchemy добавляет дочерний элемент к родительскому: столбец отношений не создан

Сообщение Гость »


Я просмотрел подобные вопросы по stackoverflow, но не нашел рабочего решения для моего конкретного случая. Я подозреваю, что проблема заключается на этапе создания родительского класса, поскольку я создаю его без my_cards, но понятия не имею, как его с его помощью создать, поскольку это поле отношения. У меня есть связь «один ко многим» в database_models.py:

класс UserBase(Base): """ Учетная запись для хранения и доступа к нескольким учебным карточкам """ __tablename__ = 'пользователи' id: Mapped[int] = mapped_column(Целое число, Primary_key=True, автоинкремент=True) telegram_id: Mapped[str] = mapped_column(String, unique=True) имя пользователя: Mapped[str] = mapped_column(String(100), unique=True) имя: Mapped[str] = mapped_column(String(200)) фамилия: Mapped[str] = mapped_column(String(200)) my_cards: Mapped[list['AssociationClass']] = отношения() класс CardBase(База): """ Обучающая карточка с текстом на лицевой и оборотной сторонах, привязанная к конкретному пользователю """ __tablename__ = 'карты' id: Mapped[int] = mapped_column(Целое число, Primary_key=True, автоинкремент=True) имя = сопоставленный_столбец (текст) фронт = сопоставленный_столбец (текст) назад = сопоставленный_столбец (текст) класс AssociationClass(Base): __tablename__ = 'association_table' user_id: Mapped[int] = Mapped_column(ForeignKey('users.id'), Primary_key=True) card_id: Mapped[int] = Mapped_column(ForeignKey('cards.id'), Primary_key=True) карта: Mapped['CardBase'] = отношение() Однако когда я пытаюсь выполнить следующее:

async def add_child_to_db( запрос, ребенок, my_async_session: AsyncSession): """ Добавляет дочерний класс к родительскому классу """ асинхронно с my_async_session.begin() в качестве сеанса: пытаться: родитель = ожидайте session.execute (запрос) родитель = родитель.первый() а = Класс Ассоциации() a.card = ребенок print(f'\n\n\n\n{a.card}\n\n\n\n') ожидайте родитель.my_cards.append(a) кроме SQLAlchemyError как exc: печать (искл.) поднимать окончательно: дождитесь сеанса.закрыть() Сеанс откатывается. Я получаю ошибку KeyError. Обратная трассировка:

Traceback (самый последний вызов — последний): Файл «/home/user/bots/bot/venv/lib/python3.10/site-packages/sqlalchemy/engine/result.py», строка 202, в _key_not_found self._key_fallback(ключ, нет) Файл «/home/user/bots/bot/venv/lib/python3.10/site-packages/sqlalchemy/engine/result.py», строка 141, в _key_fallback поднять KeyError(ключ) из ошибки Ключевая ошибка: «мои_карты» Я либо не понимаю синтаксис, либо неправильно создал базу данных. Любая помощь приветствуется. Готов предоставить дополнительную информацию по запросу.
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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