2025, Dec 30 21:01
Как удалить сохраненный пароль в Python keyring с помощью delete_password
Пошагово объясняем, как удалить пароль из Python keyring с помощью delete_password: запись, чтение, удаление, проверка и обработка PasswordDeleteError.
Если вы используете keyring в Python для хранения пароля внешнего сервиса, рано или поздно может понадобиться удалить этот секрет. Записывать и читать учетные данные просто, а вот про API для их удаления легко забыть. Ниже — короткое и практичное руководство, как аккуратно и предсказуемо удалить сохраненные данные с помощью keyring.
Постановка задачи
Вы сохраняете пароль в keyring и позже можете его получить. Теперь нужно полностью удалить этот сохраненный пароль.
import keyring
# Сохранить пароль для последующего использования
keyring.set_password("svc_label", "acct_id", "secret_value")
# Получить сохраненный пароль
pwd = keyring.get_password("svc_label", "acct_id")
Что происходит под капотом
Библиотека keyring предоставляет функции для записи, чтения и удаления секретов по паре идентификаторов: метка сервиса и имя пользователя. Помимо привычных set_password и get_password, есть отдельный API для удаления. Если попытаться удалить несуществующую запись, keyring сообщит об этом, выбросив исключение keyring.errors.PasswordDeleteError.
Решение: удаление учетных данных с помощью delete_password
Используйте keyring.delete_password, чтобы удалить сохраненный секрет, привязанный к конкретному сервису и имени пользователя.
keyring.delete_password(service_name, username)
Ниже — полный сценарий: как записать, прочитать, удалить и затем убедиться, что пароля больше нет.
import keyring
svc_name = "external_service"
user_handle = "sample_user"
# Сохранить секрет
keyring.set_password(svc_name, user_handle, "secret_value")
# Проверить, что он существует
print(keyring.get_password(svc_name, user_handle)) # secret_value
# Удалить учетные данные
keyring.delete_password(svc_name, user_handle)
# Проверить удаление
print(keyring.get_password(svc_name, user_handle)) # None
Если пароля не существует или его уже удалили, keyring вызовет исключение keyring.errors.PasswordDeleteError.
Почему это важно
Учетные данные часто остаются в системе, если их специально не удалить. Знание о keyring.delete_password помогает поддерживать локальное хранилище секретов в актуальном состоянии и предотвращает случайное использование устаревших данных. А понимание исключения keyring.errors.PasswordDeleteError подсказывает, как корректно обработать ситуацию, когда удалять уже нечего.
Выводы
Когда секрет больше не нужен, удаляйте его через keyring.delete_password, указывая сервис и имя пользователя. Используйте одни и те же идентификаторы в операциях set, get и delete, чтобы работать именно с нужной записью. Если есть шанс, что нужных данных уже нет, учитывайте сценарий с исключением keyring.errors.PasswordDeleteError. Эта простая привычка делает управление учетными данными предсказуемым и аккуратным.