Урок 81. Практикум 20: Данные о сотрудниках. Часть 2

📁 Блок: Базы данных ⏱️ Время изучения: ~90 мин 🎯 Сложность: Практикум
#from #for #in #print #with #as #enumerate #join #try #except #import #input #strip #if #not #else #int #def #len #while #return #float #and #lower #match #is #break #mkdir #add

⚡ Кратко: суть темы

Практикум по работе с базой данных hr через PyMySQL. Пять последовательных задач: сортировка сотрудников по зарплате, выбор отдела по номеру, обработка пустого отдела, фильтрация по зарплате с проверкой оператора и повторный ввод при ошибке.

  • Соединяем таблицы employees, departments и jobs через JOIN.
  • Передаём пользовательские данные только через параметризованные запросы с %s.
  • Проверяем номер отдела и знак сравнения до выполнения SQL.
  • Используем with для автоматического закрытия соединения и курсора.

Что запомнить: пользовательский ввод — это потенциально опасные данные: проверяйте их в Python, а в SQL используйте только проверенные литералы и плейсхолдеры.

Частая ошибка: путать индекс списка, который видит пользователь (с 1), с индексом Python (с 0).

📖 О чём этот урок

Этот практикум продолжает урок 80 и посвящён реальной задаче: получению данных о сотрудниках из учебной базы hr. Мы будем комбинировать SQL-запросы с логикой на Python — сортировкой, фильтрацией, валидацией ввода и обработкой пустых результатов.

Что изучим

  • Сортировку результата SELECT через ORDER BY.
  • Соединение трёх таблиц: employees, departments, jobs.
  • Параметризованные запросы и безопасную вставку оператора сравнения из белого списка.
  • Проверку пользовательского ввода: диапазон номеров, числовое значение зарплаты.
  • Обработку пустого результата и цикл повторного ввода.
  • Разбиение программы на функции для повторного использования кода.

📚 Что повторить перед изучением

  • ← Предыдущий урок: MySQL и Python
  • Параметризованные запросы с %s и кортежем параметров.
  • Конструкция with для работы с соединением и курсором.
  • Обработка исключений try ... except.

🎯 Что изучать дальше