Короткий ответ
Django подключается к базе данных через словарь DATABASES в файле settings.py. Ключ ENGINE выбирает бэкенд, например sqlite3, PostgreSQL или MySQL, а остальные параметры описывают имя базы и учётные данные. После настройки нужно применить миграции командой python manage.py migrate.
Как это работает подробнее
По умолчанию Django использует SQLite, но конфигурацию можно переключить на PostgreSQL, MySQL или Oracle.
- Движок. Ключ ENGINE задаёт бэкенд: django.db.backends.sqlite3, postgresql или mysql.
- Параметры подключения. NAME, USER, PASSWORD, HOST и PORT содержат имя базы данных и учётные данные.
- Драйвер. Python-приложение общается с базой через драйвер СУБД, реализующий стандарт DB-API, например psycopg2 для PostgreSQL.
- ORM. Django поверх драйвера работает через собственный слой доступа к данным, транслируя операции с моделями в SQL.
- Миграции. После настройки выполняется migrate, чтобы Django создал необходимые таблицы.
Пример кода
Подключение к локальной PostgreSQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}Что использовать на практике
- Для старта. На этапе прототипа подойдёт SQLite, не требующая отдельного сервера.
- Для продакшена. Выбирай PostgreSQL или MySQL и храни учётные данные вне кода, например в переменных окружения.
- Порядок запуска. После настройки подключения всегда применяй миграции, чтобы Django создал таблицы.
Подводные камни
- Секреты в коде. Пароль и имя пользователя прямо в settings.py — риск утечки; выноси их в окружение.
- Отсутствие драйвера. Без установленного драйвера СУБД подключение к выбранной базе не заработает.
- Забытые миграции. После смены базы данных нужно заново применить миграции, иначе нужных таблиц не будет.
Как отвечать на собеседовании
- Начать с того, что подключение задаётся словарём DATABASES в settings.py → пояснить ENGINE и параметры NAME, USER, PASSWORD, HOST, PORT → показать конфигурацию для PostgreSQL → упомянуть драйвер по стандарту DB-API, слой ORM и применение миграций.