Основы работы с базами данных в 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. Вы создадите свою первую БД и научитесь работать с реальными данными.