Коротко: SQLite нужна там, где данные должны пережить закрытие программы: счёт в игре, список дел, ответы бота. Она не требует сервера — это один файл рядом с кодом, поэтому подходит для обучения.

База данных нужна там, где информацию надо сохранить между запусками программы и быстро найти нужное. В курсе Python эта тема появляется на ступени Python Pro для 14–18 лет: SQLite, язык SQL и подключение через sqlite3 и SQLAlchemy.

Почему файлов уже не хватает

Работу с файлами ребёнок проходит раньше, на средней ступени: чтение, запись, обработка ошибок. Для небольших задач этого достаточно.

Проблемы начинаются, когда записей становится много. Найти одного пользователя среди тысячи строк в текстовом файле можно только перебором. Обновить его данные, не испортив соседние, — отдельная морока. А если программа упадёт посреди записи, файл останется полусломанным.

База данных решает ровно эти три вещи: поиск, изменение и целостность. Поэтому она появляется в программе не в начале, а тогда, когда подросток уже упёрся в предел файлов.

Словарь темы: таблица, строка, столбец

Вся терминология умещается в один образ — школьный журнал. Таблица — страница журнала. Столбцы — графы: фамилия, дата, оценка. Строка — одна запись, то есть одна оценка одного ученика за один день.

Дальше добавляется то, чего в бумажном журнале нет. У каждой строки есть собственный номер, который не повторяется, — по нему запись находят мгновенно, даже если однофамильцев двое. И у каждого столбца есть тип: в графе «оценка» лежат числа, и текст туда просто не положится.

На этом словарь заканчивается. Дальше идёт синтаксис, а он в SQL намеренно похож на английскую фразу: выбрать то-то из такой-то таблицы, где выполняется условие.

Почему именно SQLite, а не «настоящая» база

Потому что она уже стоит. SQLite встроена в сам Python — устанавливать ничего не надо, сервер поднимать тоже. Вся база — один файл рядом со скриптом: его можно скопировать на флешку, отправить преподавателю, открыть на другом компьютере.

Для обучения это решающее преимущество. На «взрослых» базах первое занятие уходит на установку сервера, настройку доступов и объяснение, почему ничего не подключается. Здесь первый запрос выполняется на пятой минуте.

Игрушкой SQLite при этом не является. Её носят в себе браузеры и телефоны, в ней хранят настройки миллионы приложений. Подросток учится не на упрощённой модели, а на рабочем инструменте — просто на самом лёгком из рабочих.

Четыре команды, на которых держится всё

В теме разбирают базовый набор SQL: SELECT — найти, INSERT — добавить, UPDATE — изменить, DELETE — удалить.

Ценность здесь не в количестве команд, а в самом способе мышления. В SQL не описывают, как искать, — описывают, что нужно найти. Для подростка, который два года писал циклы и условия, это заметно другой подход, и он хорошо тренирует способность формулировать задачу.

Почему именно SQLite: вся база лежит в одном файле, ничего не надо устанавливать и настраивать. Поэтому она удобна для обучения — и поэтому же её используют в настоящих приложениях, от браузеров до мобильных программ.

Где это сразу применяется

Следующая тема программы — Telegram-бот с базой данных: aiogram плюс SQLite, регистрация пользователей, профили, админ-панель, диалоги на машине состояний.

Разница с ботом из предыдущей ступени принципиальная. Тот бот отвечал на сообщения и забывал всё после перезапуска. Этот — помнит пользователя, его настройки и историю. Это уже приложение.

Дальше база нужна в веб-API на Flask, а затем в финальном проекте ступени — полноценном AI-продукте с деплоем.

Не сложен ли SQL после Python?

Базовый набор усваивается быстрее, чем кажется: четыре команды с простым синтаксисом. Сложность начинается в оптимизации больших запросов, а до этого на курсе не доходит.

Зачем SQLAlchemy, если есть sqlite3?

sqlite3 — прямой путь: пишем SQL руками. SQLAlchemy позволяет работать с таблицами как с обычными объектами Python. В программе показывают оба, потому что в реальных проектах встречаются тоже оба.

Понадобится ли это, если подросток пойдёт не в разработку?

SQL — один из немногих навыков, выходящих далеко за пределы программирования. Аналитики, маркетологи и финансисты пишут запросы к базам регулярно, не будучи разработчиками.

Полтора часа с таблицей на экране

Полтора часа, и почти всё это время на экране две вещи рядом: таблица с данными и окно, куда подросток пишет запрос. Изменил условие — увидел другой набор строк. Обратная связь мгновенная, и именно поэтому тема заходит легче, чем ожидают от слов «базы данных».

Данные берём не абстрактные. Список собственных проектов, каталог игр, траты за неделю, оценки за четверть — что-то, где подросток сам понимает, какой результат правильный. Когда запрос возвращает бессмыслицу, он замечает это сам, без преподавателя.

Три ошибки, на которых учатся все

Забыть сохранить. Запрос выполнился, сообщений об ошибке нет, а после перезапуска данных тоже нет. Причина в том, что изменения надо подтвердить отдельным действием. Одного такого раза хватает, чтобы запомнить навсегда.

Удалить всё. Команда удаления без уточнения «кого именно» убирает таблицу целиком. Мы даём на это отдельное упражнение — намеренно, на тестовых данных, чтобы момент осознания наступил там, где ничего не жалко.

Дубли. Один и тот же человек попадает в таблицу дважды, потому что запись добавляется без проверки, есть ли она уже. Отсюда естественно вырастает разговор об уникальных полях — и это лучший момент его начать, потому что потребность уже чувствуется.

Пригодится ли SQL вне программирования

Чаще, чем кажется. Язык запросов нужен аналитику, маркетологу, тестировщику, бухгалтеру в большой компании — всем, кто достаёт данные из чужой системы, а не пишет её. Это один из немногих навыков курса, который работает сам по себе, без остального Python.

Ещё одна побочная польза — понимание, как устроены данные вообще. Подросток, который один раз описал таблицу сам, иначе смотрит на любую форму регистрации: он видит за ней поля, типы и обязательность, а не набор рамок на экране.

Что меняется в проектах после этой темы

Следующая тема ступени — Telegram-бот с базой. Тот самый бот, которого подросток писал годом раньше, получает память: регистрация пользователя, профиль, история обращений, админ-панель. До этой темы бот забывал собеседника после каждого перезапуска.

Дальше идёт Flask — веб-сервис, который читает из той же базы и отдаёт данные странице. Потом анализ данных: pandas читает таблицы, считает и рисует графики. Во всех трёх случаях база лежит в основе, и поэтому тема стоит в программе раньше них, а не после.

Для финального проекта это значит простую вещь: работа перестаёт быть скриптом, который что-то посчитал и закрылся. Появляется то, что накапливается между запусками, — и именно за это проект начинает выглядеть как приложение.

Место темы в программе

Python Pro рассчитан на 14–18 лет, 18 месяцев и 156 занятий. Базы данных стоят в середине: после ООП и парсинга, перед Flask и машинным обучением. Такой порядок не случаен — к этому моменту уже есть что хранить и зачем.

Что из этих тем идёт в портфолио, разобрано отдельно: портфолио до 18 лет. Полная программа ступени — на странице курса Python Pro.