Коротко: 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.