Основы работы с базами данных в Python: что такое БД и зачем они нужны
Тысяча пользователей лежит в Python-списке. Приходит запрос «найди того, у кого email такой-то», и программа честно перебирает список с начала, запись за записью. На тысяче это незаметно, а на миллионе превращается в ощутимую задержку. Вдобавок список исчезает при перезапуске, и двое одновременно в него не запишут. Всё это умеет база данных: быстрый поиск, сохранность данных между запусками, одновременный доступ.
Почти любое приложение, которое хранит что-то надолго — пользователей, заказы, сообщения, — держит это в базе данных, а не в памяти программы. Разберёмся, что такое БД и почему для этой задачи не годится обычный список Python.
Что такое база данных?
Простая аналогия: база данных — это как умный склад. Каждая «полка» имеет свой адрес, а «складской робот» (СУБД) может быстро найти и доставить любую нужную информацию.
Почему не хранить данные в Python-списках?
Рассмотрим простой пример — хранение пользователей:
Python 3.13# Хранение в Python-списке users = [ {"id": 1, "name": "Анна", "email": "anna@example.com"}, {"id": 2, "name": "Петр", "email": "petr@example.com"}, # ... представьте здесь миллион пользователей ] # Поиск пользователя по email def find_user_by_email(email): for user in users: # Просматриваем ВЕСЬ список! if user["email"] == email: return user return None
Проблемы такого подхода:
- Медленный поиск — нужно проверить каждого пользователя
- Ограничения памяти — все данные должны помещаться в оперативной памяти
- Потеря данных — если программа упадёт, всё пропадёт
- Одновременный доступ — что будет, если несколько пользователей меняют данные в один момент?
Базы данных решают все эти проблемы из коробки — именно поэтому они стали стандартом для серьезных приложений.
Основные типы баз данных
Существует много видов баз данных, но выделим три наиболее важных:
1. Реляционные базы данных
Организуют данные в таблицы с четкой структурой. Самый популярный тип.
-- Пример таблицы пользователей CREATE TABLE users ( id INTEGER PRIMARY KEY, name VARCHAR(100), email VARCHAR(150) );
2. Базы «ключ-значение»
Хранят простые пары «ключ-значение» (key-value). Очень быстрые для простых операций.
Python 3.13# Пример в Redis — популярной key-value БД user_session = { "session:user123": "logged_in", "cart:user123": "[1,5,9]", # ID товаров в корзине "last_seen:user123": "2024-01-15 10:30" }
3. Документоориентированные базы данных
Хранят данные как документы (JSON-формат). Гибкая структура.
Python 3.13# Пример документа пользователя { "name": "Анна", "email": "anna@example.com", "preferences": { "theme": "dark", "language": "ru" } }
Популярные системы управления БД
Реляционные БД — то, с чем вы столкнётесь чаще всего: PostgreSQL и MySQL на серверах, SQLite внутри телефонов, браузеров и самого Python. Из остальных регулярно попадаются Redis (кэш и сессии) и MongoDB (документы).
Оставшиеся три главы модуля — про реляционные БД, поэтому дальше говорим только о них.
Проверка понимания
Почему для хранения пользователей приложения выбирают базу данных, а не обычный список в памяти?
Что дальше?
В следующей статье мы начнем практику с SQLite — идеальной базой данных для изучения, которая уже встроена в Python. Вы создадите свою первую БД и научитесь работать с реальными данными.
