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 проекта. Осталось только выбрать подходящий вариант и подключить! (А для продакшена не забудьте о безопасности.)
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ