SQLAlchemy для початківців: моделі, запити та зв’язки
19.04.2026SQLAlchemy — це один із найпопулярніших інструментів для роботи з базами даних у Python. Його часто обирають за гнучкість, читабельність коду та можливість працювати як на рівні SQL, так і через об’єктно-реляційне відображення, тобто ORM. Для початківця SQLAlchemy зручний тим, що дозволяє описувати таблиці як Python-класи, а потім працювати з даними майже як зі звичайними об’єктами.
У цій статті розглянемо базові поняття: як створювати моделі, виконувати запити та будувати зв’язки між таблицями. Матеріал підійде тим, хто вже знає основи Python і хоче зробити перший крок до роботи з реальними даними у проєкті.
Що таке SQLAlchemy
SQLAlchemy — це бібліотека для взаємодії з реляційними базами даних. Вона складається з кількох частин, але для початку найважливішою є ORM-частина. Саме вона дозволяє описувати таблиці у вигляді класів, а рядки таблиці — у вигляді об’єктів Python.
Такий підхід зменшує кількість ручного SQL-коду, полегшує підтримку застосунку та робить логіку роботи з даними більш зрозумілою. При цьому SQLAlchemy не приховує базу даних повністю: за потреби можна писати й складні запити, і працювати ближче до SQL.
Встановлення та основа роботи
Перед початком роботи бібліотеку потрібно встановити. Найчастіше для цього використовують пакетний менеджер pip. Після встановлення створюють підключення до бази даних, описують моделі та запускають сесію для виконання запитів.
У спрощеному вигляді робота з SQLAlchemy виглядає так:
- створюємо engine для підключення до бази;
- описуємо моделі;
- створюємо таблиці;
- відкриваємо сесію;
- додаємо, шукаємо, змінюємо або видаляємо записи.
Моделі в SQLAlchemy
Модель — це Python-клас, який відповідає таблиці в базі даних. Кожен атрибут класу зазвичай відповідає окремому стовпцю. Наприклад, якщо у вас є таблиця користувачів, модель може містити поля для імені, email та дати створення.
Ось логіка створення простої моделі:
- створюється базовий клас для моделей;
- задається назва таблиці;
- визначаються колонки та їхні типи;
- вказуються ключі та обмеження, наприклад primary key або unique.
Приклад простої моделі
Уявімо таблицю users. Вона може містити такі поля: id, name, email. У SQLAlchemy це виглядає як клас, де id — первинний ключ, а email бажано зробити унікальним, щоб не було двох однакових записів.
Коли модель описана, SQLAlchemy може створити відповідну таблицю в базі. Це дуже зручно на старті проєкту, бо структура даних зберігається в одному місці — у коді.
Сесія: як працювати з даними
Сесія в SQLAlchemy — це об’єкт, через який виконуються операції над базою. Саме вона дозволяє додавати нові записи, отримувати результати запитів, оновлювати об’єкти та зберігати зміни.
Сесію можна уявити як робочий простір між програмою і базою даних. Ви змінюєте об’єкти в пам’яті, а потім передаєте ці зміни до бази за допомогою commit. Якщо щось пішло не так, зміни можна відкотити.
Базові запити
Після того як модель створена і сесія відкрита, можна переходити до основних операцій: створення, читання, оновлення та видалення записів. Ці дії часто називають CRUD.
Додавання запису
Щоб створити новий запис, спочатку створюють об’єкт моделі, а потім додають його в сесію. Після цього викликають commit, щоб зміни збереглися в базі.
Отримання даних
Для читання даних SQLAlchemy пропонує зручні методи запиту. Можна отримати всі записи таблиці, знайти один запис за умовою або відфільтрувати дані за певним полем. Наприклад, часто шукають користувача за email або список об’єктів, що відповідають певному статусу.
Оновлення запису
Щоб змінити дані, спочатку знаходять потрібний об’єкт, потім змінюють його атрибути як звичайні властивості Python-об’єкта. Після commit зміни зберігаються в таблиці.
Видалення запису
Для видалення об’єкт знаходять у базі, передають у сесію для видалення, а потім підтверджують операцію. Це стандартний і досить зрозумілий процес, який добре вписується в об’єктний стиль роботи.
Фільтрація та сортування
Одна з найкорисніших можливостей SQLAlchemy — це фільтрація результатів. Ви можете шукати записи за точним збігом, частковим збігом, діапазоном значень або комбінувати кілька умов.
Також часто потрібне сортування. Наприклад, можна отримати список користувачів за алфавітом або вивести найновіші записи першими. У реальних проєктах це допомагає будувати списки, каталоги, панелі керування та аналітичні сторінки.
- Фільтрація — для відбору потрібних записів.
- Сортування — для впорядкування результатів.
- Ліміт — для обмеження кількості рядків.
Зв’язки між таблицями
У більшості застосунків таблиці не існують окремо одна від одної. Наприклад, один користувач може мати багато замовлень, а кожне замовлення належить одному користувачу. Саме для таких ситуацій у SQLAlchemy використовують зв’язки.
Один до багатьох
Найпоширеніший тип зв’язку — один до багатьох. Його можна побачити у зв’язку між категорією та статтями, користувачем і повідомленнями, автором і книгами. У таблиці “багатьох” зазвичай зберігається зовнішній ключ, який вказує на запис у таблиці “одного”.
Наприклад, якщо один користувач має кілька постів, у таблиці posts буде поле user_id. Воно показує, якому саме користувачу належить кожен пост. У самих моделях SQLAlchemy такий зв’язок описується через relationship і foreign key.
Один до одного
Іноді кожному запису однієї таблиці відповідає рівно один запис іншої. Наприклад, профіль користувача може бути окремою таблицею, де зберігаються додаткові дані. Такий зв’язок використовують, коли потрібно розділити базову та розширену інформацію.
Багато до багатьох
Ще один поширений тип — багато до багатьох. Наприклад, стаття може мати багато тегів, а один тег — належати багатьом статтям. Для цього створюють проміжну таблицю, яка зберігає пари пов’язаних записів.
Практичні поради для початківців
Коли ви тільки починаєте вивчати SQLAlchemy, важливо не намагатися одразу охопити все. Краще спочатку зрозуміти базові моделі, прості запити та один тип зв’язку. Після цього решта функцій сприйматиметься значно легше.
- Починайте з однієї простої таблиці.
- Потім додайте фільтрацію та сортування.
- Після цього переходьте до зв’язків між таблицями.
- Перевіряйте результати запитів у невеликому тестовому проєкті.
Також корисно одразу привчитися до зрозумілих назв моделей і полів. Це полегшує підтримку коду і зменшує кількість помилок, коли проєкт починає рости.
Висновок
SQLAlchemy — це зручний спосіб працювати з базою даних у Python без зайвої складності. Для початківця найважливіше зрозуміти три речі: як описуються моделі, як виконуються базові запити та як будуються зв’язки між таблицями.
Після засвоєння цих основ ви зможете впевнено створювати прості CRUD-додатки, працювати з реальними даними та поступово переходити до складніших сценаріїв. Саме з таких кроків починається якісна практика роботи з Python і базами даних.