Задать вопрос
@datel

Как удалить данные из таблицы sqllite через sqlalchemy при определённом условии?

async def read_msg_appeal(frwrdid: int) -> None:
    async with async_session() as session:
        ret = await session.scalar(select(MainTable).where(MainTable.forward_message_id == frwrdid))
        session.delete(MainTable()).where(MainTable.forward_message_id == frwrdid)
        await session.commit()
        return ret


У меня есть данные (их пример находится в переменной ret), я должен эти данные взять (это благополучно получается), а потом удалить. Я делал взятие данных по гайду, а удаление так и не понял как написать, способов 5 нашёл, везде ошибку пишет.

Как это сделать?
  • Вопрос задан
  • 42 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
async def read_msg_appeal(frwrdid: int) -> MainTable | None:
    async with async_session() as session:
        query = select(MainTable).where(MainTable.forward_message_id == frwrdid)
        record = await session.scalar(query)

        if record:
            await session.delete(record)
            await session.commit()

        return record

Если запись существует - она будет удалена.
Ошибка в том, что вы создавали новый объект в запросе удаления.

session.delete(MainTable()).where(MainTable.forward_message_id == frwrdid)


Пишите читаемый код, а не однострочный.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы