Що таке ORM (Object-Relational Mapper)?
Операції з базами даних є важливою частиною процесу розробки програмного забезпечення. Часто SQL запити, що використовуються для взаємодії з базою даних, можуть бути складними і важкими для розуміння. У цьому випадку на допомогу приходять інструменти Object-Relational Mapping (ORM). ORM дозволяє представляти таблиці бази даних у вигляді класів Python і керувати операціями з базою даних, використовуючи об'єктно-орієнтований підхід. Це дозволяє розробникам виконувати більше роботи за меншу кількість коду та спрощує керування базою даних.
У цьому пості ми спочатку покажемо, як створювати таблиці, додавати, оновлювати і видаляти дані за допомогою традиційних SQL команд. Потім, ми побачимо, наскільки легше виконувати ці операції за допомогою ORM.
1. Створення бази даних PostgreSQL та запуск за допомогою Docker
Спочатку потрібно створити базу даних і підключитися до неї. У цьому пості ми використаємо PostgreSQL і створимо базу даних за допомогою Docker. Якщо у вас вже встановлений Docker, ви можете створити базу даних за допомогою наступної команди:
docker run \
--name postgres-server \
-e POSTGRES_USER=db_user \
-e POSTGRES_PASSWORD=db_password \
-e POSTGRES_DB=db \
-p 5432:5432 \
-d postgres
Ця команда створить контейнер із назвою postgres-server
. Користувач бази даних буде мати ім'я db_user
, а пароль - db_password
. Буде створена база даних db
, а параметр -p
визначить порти для доступу до сервера PostgreSQL в контейнері. Цю інформацію слід записати, оскільки вона знадобиться пізніше.
2. Встановлення необхідних бібліотек
Щоб підключитися до бази даних, потрібно встановити необхідні бібліотеки для Python. Ви можете встановити бібліотеки SQLAlchemy
та psycopg2
за допомогою такої команди:
pip3 install sqlalchemy psycopg2-binary
3. Операції з базою даних за допомогою SQL команд
Тепер ми підключимося до бази даних, яку ми запустили на Docker, за допомогою традиційних SQL команд для створення, оновлення та видалення таблиць. Припустимо, ми програмуємо бекенд для сторінки профілю користувача. Для цього створимо таблицю профілю для зберігання даних користувача.
Спочатку подивимося, як здійснити підключення до бази даних:
from sqlalchemy import create_engine, text
# Вводимо інформацію про базу даних у цьому форматі
DATABASE_URL = "postgresql+psycopg2://db_user:db_password@localhost:5432/db"
# Створюємо engine і налаштовуємо з’єднання
engine = create_engine(DATABASE_URL)
# Перевіряємо підключення за допомогою простого SQL запиту
with engine.connect() as connection:
result = connection.execute(text("SELECT 1"))
print(result.scalar())
Якщо все налаштовано правильно, цей код виведе 1
в консоль.
4. Створення таблиці профілю
Повернемося до нашого сценарію. Нас попросили створити бекенд для керування даними профілю користувача. Спочатку створимо таблицю profiles
. Ось SQL код для створення таблиці:
from sqlalchemy import create_engine, text
DATABASE_URL = "postgresql+psycopg2://db_user:db_password@localhost:5432/db"
engine = create_engine(DATABASE_URL)
with engine.connect() as connection:
create_table_query = text("""
CREATE TABLE IF NOT EXISTS profiles (
id SERIAL PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
birth_date DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
""")
connection.execute(create_table_query)
print("Таблиця успішно створена.")
Цей запит створить таблицю профілю.
Таблиця матиме такі стовпці: id
, first_name
, last_name
, email
, birth_date
, created_at
та updated_at
. Якщо все налаштовано правильно, на екрані з’явиться повідомлення "Таблиця успішно створена."
Перекладено з: SQLAlchemy ORM: Python’da Modern ve Etkili Veri Tabanı Yönetimi