Помоги решить проблему. Личные фоны не удаляются из базы после использования, а идут по кругу. Вот код:
@dp.message_handler(lambda message: message.text == "🖼 Замена фона")
async def on_change_background_button(message: types.Message):
    process_message = await message.answer("*Фото обрабатываются, подождите\.\.\.*",parse_mode="MarkdownV2")
    user_id = message.from_user.id
    async with connect('bot.db') as db:  # Убедитесь, что используете контекстный менеджер
        # Определяем, должны ли использоваться общие фоны
        cursor = await db.execute("SELECT use_common_backgrounds FROM users WHERE user_id = ?", (user_id,))
        use_common_backgrounds = (await cursor.fetchone())[0]

        # В зависимости от настроек выбираем фоны
        if use_common_backgrounds:
            cursor = await db.execute("SELECT photo_id FROM common_backgrounds ORDER BY RANDOM()")
        else:
            cursor = await db.execute("SELECT photo_id FROM backgrounds WHERE user_id = ?", (user_id,))
        backgrounds = await cursor.fetchall()

        # Получаем фотографии пользователя
        cursor = await db.execute("SELECT photo_id FROM userphotos WHERE user_id = ?", (user_id,))
        user_photos = await cursor.fetchall()


    if not backgrounds or not user_photos:
        await message.answer("Необходимо загрузить фоновые изображения и/или креатив.")
        return

    used_background_ids = []  # Список использованных личных фонов для удаления
    media_groups = []
    background_index = 0

    for user_photo in user_photos:
            # Начинаем по новой сначала списка, если фонов меньше чем фото
        if background_index >= len(backgrounds):
            background_index = 0

        background = backgrounds[background_index]
        background_index += 1

        if not use_common_backgrounds:
            used_background_ids.append(background[0])  # Добавляем ID фона в список использованных личных фонов

            # Применяем фон к фотографии пользователя
        processed_image_io = await apply_background(user_photo[0], background[0])
        media_groups.append(types.InputMediaPhoto(processed_image_io))

        # Отправляем обработанные фото пользователю
    await bot.delete_message(chat_id=process_message.chat.id, message_id=process_message.message_id)
    if media_groups:
        await bot.send_media_group(message.chat.id, media=media_groups)

    async with connect('bot.db') as db:
        # Обновление счетчика замен фона
        if use_common_backgrounds:
            await db.execute(
                "UPDATE users SET common_backgrounds_count = common_backgrounds_count + 1 WHERE user_id = ?",
                (user_id,))
        else:
            await db.execute(
                "UPDATE users SET personal_backgrounds_count = personal_backgrounds_count + 1 WHERE user_id = ?",
                (user_id,))

        # Удаление использованных фонов
        if used_background_ids and not use_common_backgrounds:
            await db.executemany("DELETE FROM backgrounds WHERE id = ?", [(id,) for id in used_background_ids])
            await db.commit()
        # Commit транзакции только один раз, после всех изменений
        await db.commit()