Django з коробки підтримує наступні бази даних:
- SQLite (за замовчуванням, легковісна реляційна БД).
- PostgreSQL (чудовий вибір для великих і масштабованих проєктів).
- MySQL (популярний і надійний вибір).
- Oracle (якщо у вас Enterprise рішення і багато грошей).
Зараз ми розберемося, як все це підключити і налаштувати.
Основи конфігурації бази даних у Django
Параметр DATABASES у settings.py
Файл settings.py — це головний диригент вашого проєкту. І саме він відповідає за зв'язок Django з обраною базою даних. У секції налаштування DATABASES описана конфігурація всіх використовуваних баз даних. За замовчуванням після створення проєкту ви побачите такий запис:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Движок для SQLite
'NAME': BASE_DIR / 'db.sqlite3', # Шлях до файлу бази даних
}
}
Поля конфігурації бази даних:
ENGINE: Визначає движок бази даних. Наприклад:
django.db.backends.sqlite3— движок для SQLite.django.db.backends.postgresql— для PostgreSQL.django.db.backends.mysql— для MySQL.
NAME: для SQLite це шлях до вашого файлу бази даних. Для PostgreSQL/MySQL — це ім'я бази даних.
USER: ім'я користувача для підключення до бази даних (неактуально для SQLite, але потрібно для інших движків).
PASSWORD: пароль користувача для бази даних.
HOST: локація бази даних (зазвичай
localhostдля локальної розробки або IP-адреса сервера).PORT: порт, який використовується для підключення до бази даних (зазвичай 5432 для PostgreSQL, 3306 для MySQL).
Підключення до SQLite
SQLite поставляється з Django і використовується за замовчуванням. Це дуже зручний варіант для локальної розробки та тестових проєктів. Ніяких додаткових налаштувань не потрібно.
Але SQLite не ідеальний для продакшн-проєктів (наприклад, відсутня повноцінна підтримка конкурентних з'єднань). Тому найчастіше ми переїжджаємо на щось більш серйозне, наприклад, PostgreSQL. Досить ізоляції, пора в місто!
Налаштування PostgreSQL
PostgreSQL — це як швейцарський ніж, але для бази даних: функціонально, масштабовано та професійно. Для налаштування PostgreSQL потрібно:
- Встановити PostgreSQL на вашу систему (якщо ще не встановлено).
- Встановити драйвер
psycopg2для взаємодії з PostgreSQL:
pip install psycopg2-binary
- Змінити налаштування у
settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql', # Движок PostgreSQL
'NAME': 'mydatabase', # Ім'я бази даних
'USER': 'mydatabaseuser', # Користувач
'PASSWORD': 'mypassword', # Пароль
'HOST': 'localhost', # Адреса сервера
'PORT': '5432', # Порт
}
}
- Створити базу даних у PostgreSQL:
- Відкрийте консоль PostgreSQL:
psql -U postgres - Створіть нову базу даних:
CREATE DATABASE mydatabase; - Створіть нового користувача та задайте йому пароль:
CREATE USER mydatabaseuser WITH PASSWORD 'mypassword'; - Надайте користувачу права на базу даних:
GRANT ALL PRIVILEGES ON DATABASE mydatabase TO mydatabaseuser;
Вітаю, PostgreSQL налаштовано! Можете замовити собі каву (або ще одну статтю в блозі)!
Налаштування MySQL
Якщо ти вирішив працювати з MySQL, процес буде схожим:
- Встанови MySQL та налаштуй сервер (наприклад, через Docker).
- Встанови драйвер
mysqlclient:
pip install mysqlclient
Налаштуй
settings.py:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', } }Створи базу даних та користувача (аналогічно PostgreSQL). Якщо лінь, можна використовувати графічний клієнт на кшталт MySQL Workbench.
Особливості та нюанси підключення бази даних
Помилки підключення: якщо Django скаржиться на "Connection Refused", перевірте:
- Чи увімкнений сервер бази даних.
- Чи збігаються ваші дані доступу (
USER,PASSWORD,HOST,PORT).
База даних у продакшені:
- Ніколи не використовуйте SQLite у реальній інфраструктурі.
- Зберігайте користувацькі дані безпечно, використовуючи шифрування (наприклад, TLS).
Змінні оточення:
Для безпеки рекомендується приховувати параметри підключення у змінних оточення. Приклад:
import os DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': os.getenv('DB_NAME'), 'USER': os.getenv('DB_USER'), 'PASSWORD': os.getenv('DB_PASSWORD'), 'HOST': os.getenv('DB_HOST', 'localhost'), 'PORT': os.getenv('DB_PORT', '5432'), } }
Міграції та управління базою даних
Щоб зміни в моделях Django застосовувались у базі даних, використовуються міграції. Це набір інструкцій для зміни структури бази.
Створення міграцій:
python manage.py makemigrationsЗастосування міграцій:
python manage.py migrateПерегляд стану міграцій:
python manage.py showmigrations
Помилки можуть виникати, якщо структура бази даних була змінена вручну. Ніколи не редагуйте таблиці напряму, краще використовуйте Django ORM та міграції.
Корисні поради
Тестова база даних: Django може автоматично створювати тимчасову базу даних для тестів. Не забудьте вказати тип тестової бази у налаштуваннях:
TEST = { 'NAME': 'test_database', }- Резервне копіювання (Backup): регулярно виконуйте бекапи бази даних. У PostgreSQL це можна зробити командою:
pg_dump mydatabase > backup.sql
Тепер ви знаєте, як налаштувати бази даних для вашого Django проєкту. Залишилося лише обрати відповідний варіант і підключити! (А для продакшену не забудьте про безпеку.)
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ