1. Основы Python и работа с реляционными базами данных PostgreSQL и MySQL
Основы Python и работа с реляционными базами данных PostgreSQL и MySQL
Backend-разработка строится на двух фундаментальных столпах: логике обработки данных (код) и хранении этих данных (базы данных). Python стал стандартом индустрии благодаря своей лаконичности и мощной экосистеме для работы с данными. В этой статье мы разберем необходимый минимум синтаксиса Python и научимся взаимодействовать с двумя самыми популярными реляционными базами данных: PostgreSQL и MySQL.
Краткий экскурс в Python для Backend
Для работы с серверной частью не нужно знать весь язык наизусть. Вам понадобятся конкретные инструменты: типы данных, управление потоком и работа с модулями.
Структуры данных
Backend постоянно пересылает данные в формате JSON. В Python прямым аналогом JSON является словарь (dict).
Списки (list) используются для хранения наборов данных, например, результатов запроса к базе данных, где каждая строка таблицы — это отдельный элемент списка.
Обработка исключений
Работа с базами данных и сетью всегда сопряжена с рисками: сервер может быть недоступен, пароль неверен или запрос составлен с ошибкой. Для этого используется конструкция try-except.
Реляционные базы данных: концепция
Реляционные базы данных (RDBMS) хранят информацию в виде таблиц, связанных между собой. Это строгая структура, где каждый столбец имеет определенный тип данных.
!ER-диаграмма, показывающая связь между пользователями и их заказами через внешний ключ
SQL: Язык запросов
SQL (Structured Query Language) — это единый стандарт для общения с реляционными базами. Независимо от того, используете вы PostgreSQL или MySQL, базовый синтаксис будет одинаковым.
Основные операции (CRUD):
INSERT INTO users (name, email) VALUES ('Alex', 'alex@example.com');SELECT * FROM users WHERE name = 'Alex';UPDATE users SET email = 'new@example.com' WHERE id = 1;DELETE FROM users WHERE id = 1;Подготовка окружения
Python не умеет общаться с базами данных «из коробки». Ему нужны драйверы — библиотеки, которые транслируют команды Python в протокол базы данных.
Установим драйверы для PostgreSQL и MySQL:
Работа с PostgreSQL
PostgreSQL — это мощная объектно-реляционная СУБД, стандарт для сложных корпоративных систем. Библиотека psycopg2 является самым популярным адаптером для нее.
Подключение и выполнение запросов
Для выполнения SQL-команд используется объект курсор. Курсор — это инструмент, который позволяет перебирать записи в базе данных и выполнять операции.
Безопасность: SQL-инъекции
Одна из самых критичных уязвимостей в backend-разработке — SQL-инъекция. Она возникает, когда данные от пользователя подставляются в запрос напрямую через форматирование строк.
ОПАСНО (Никогда так не делайте):
БЕЗОПАСНО (Параметризованные запросы): Драйвер базы данных сам экранирует опасные символы, если передавать данные вторым аргументом.
Работа с MySQL
MySQL часто используется в веб-проектах благодаря своей скорости и простоте. Логика работы через mysql-connector аналогична psycopg2, но есть синтаксические отличия в плейсхолдерах.
Транзакции: Commit и Rollback
При изменении данных (INSERT, UPDATE, DELETE) базы данных используют механизм транзакций. Изменения не применяются мгновенно. Команда conn.commit() подтверждает транзакцию, сохраняя изменения на диске. Если произошла ошибка, можно выполнить conn.rollback(), чтобы отменить все изменения в рамках текущей транзакции.
Context Managers (Менеджеры контекста)
Чтобы не забывать закрывать соединения и курсоры, в Python используется оператор with. Это профессиональный подход к управлению ресурсами.
Итоги
try-except).psycopg2 для PostgreSQL, mysql-connector для MySQL).%s).commit().