Урок 80. MySQL и Python

📁 Блок: Базы данных ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя
#pass #print #if #close #from #for #in #with #as #try #except #import #insert #update #or #finally #values #input #else #enumerate #not

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

MySQL и Python — подключаемся к реляционной базе данных из Python через библиотеку PyMySQL, выполняем SQL-запросы и безопасно обрабатываем результаты.

  • Устанавливаем pip install pymysql и открываем соединение через pymysql.connect(...).
  • Через объект cursor выполняем запросы методом execute(), а результаты читаем через fetchone(), fetchmany(), fetchall() или цикл for row in cursor.
  • Параметры запроса всегда передаём отдельно от текста SQL — через %s или %(name)s — чтобы избежать SQL-инъекций.
  • Для надёжности используем with connection.cursor() as cursor и обрабатываем ошибки через try ... except pymysql.MySQLError.

Что запомнить: никогда не подставляй пользовательский ввод напрямую в строку SQL — только параметризованные запросы.

Частая ошибка: забыть запятую в кортеже из одного значения: (value,) обязательна.

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

Когда программы растут, данные нужно хранить вне кода — в базах данных. MySQL — одна из самых популярных реляционных СУБД. В этом уроке мы научимся подключаться к ней из Python, выполнять запросы, получать результаты и защищать код от типичных ошибок.

Что изучим

  • Установку PyMySQL и создание соединения с параметрами подключения.
  • Создание курсора и выполнение SQL-запросов.
  • Методы чтения результатов: fetchone(), fetchmany(), fetchall() и итерация по курсору.
  • Параметризованные запросы с позиционными %s и именованными %(name)s плейсхолдерами.
  • Обработку ошибок через исключения PyMySQL.
  • Контекстный менеджер with для автоматического закрытия соединения и курсора.

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

  • ← Предыдущий урок: Summary session 20
  • Исключения и конструкция try ... except (урок 48).
  • Контекстный менеджер with для работы с файлами (урок 52).
  • Словари и распаковка **config (уроки 34–36).

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