Загрузка...

Sqlalchemy не удаляется из бд

Тема в разделе Python создана пользователем Hollywood 1 май 2025. 98 просмотров

Загрузка...
  1. Hollywood
    Hollywood Автор темы 1 май 2025 t.me/likeabuy_bot – Автоматическая покупка тг подарков 19 057 28 окт 2020
    Python
    async def del_user(user_id: int):
    async with async_session() as session:
    try:
    await session.execute(delete(User).where(User.id==user_id).returning(User.id))
    await session.commit()
    except IntegrityError as e:
    await session.rollback()
    пишет что все хорошо и удалилось, но в бд записи отсались.

    бд:
    Python
    class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True, index=True)
    user_id = Column(BigInteger, unique=True)
    business_connection = Column(String)
     
  2. противоположник
    скинь как ты вызываешь del_user() и передаешь user_id
     
    1. Посмотреть предыдущие комментарии (1)
    2. противоположник
      Hollywood, ты сравниваешь
      ⁡user.id == user_id
      ⁡, но скорее всего тебе надо
      ⁡user.user_id == user_id

      Python
      async def del_user(user_id: int):
      async with async_session() as session:
      try:
      await session.execute(
      delete(User).where(User.user_id == user_id)
      )
      await session.commit()
      except IntegrityError as e:
      await session.rollback()
      1 май 2025 Изменено
    3. Hollywood Автор темы
  3. Rostelecom
    Rostelecom 1 май 2025 0 11 июн 2024
    Код
    async def del_user(user_id: int):
    async with async_session() as session:
    try:
    result = await session.execute(
    delete(User).where(User.user_id == user_id)
    )
    await session.commit()

    # Проверяем, была ли удалена хотя бы одна строка
    if result.rowcount > 0:
    return True
    return False

    except Exception as e: # лучше ловить все исключения для диагностики
    await session.rollback()
    print(f"Error deleting user: {e}")
    return False
     
Top