Ответ
Django имеет встроенную поддержку нескольких реляционных баз данных и может работать с другими через сторонние пакеты.
Официально поддерживаемые
Это базы данных, для которых Django предоставляет встроенный бэкенд в django.db.backends:
- PostgreSQL (
postgresql) — наиболее рекомендуемый выбор для production-окружения благодаря своей надежности и богатому функционалу. - MySQL / MariaDB (
mysql) - SQLite (
sqlite3) — легковесная файловая БД, идеальна для локальной разработки и прототипирования. - Oracle (
oracle)
Поддерживаемые через сторонние библиотеки
Для работы с NoSQL и другими базами данных требуются внешние пакеты, которые предоставляют кастомный бэкенд для Django ORM:
- MongoDB: через
djongo - CockroachDB: через
django-cockroachdb - Microsoft SQL Server: через
mssql-django
Пример конфигурации в settings.py
Так выглядит настройка для подключения к PostgreSQL:
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase', # Имя вашей БД
'USER': 'myuser', # Пользователь БД
'PASSWORD': 'mypassword', # Пароль
'HOST': '127.0.0.1', # Адрес сервера БД
'PORT': '5432', # Порт
}
}
Ключевой момент: Хотя Django может работать с NoSQL базами, его ORM спроектирована для реляционных моделей. При использовании NoSQL некоторые возможности ORM (например, сложные JOIN-подобные запросы) могут быть ограничены.
Ответ 18+ 🔞
А, слушай, про базы данных в Django, ну это вообще отдельная песня, блядь! Тут как бы есть официально одобренные варианты, а есть такие, на которые надо ставить костыли из интернета, понимаешь?
То, что из коробки идет, родное
Вот эти, сука, базы — для них в самом Django уже всё готово, как будто тёща на праздник принесла салатик. Просто берёшь и юзаешь.
- PostgreSQL — это, блядь, царь-батюшка, ёпта! Для продакшена — самое то, надёжный как швейцарские часы, только без этой всей хуйни.
- MySQL / MariaDB — ну, тоже народные любимчики, куда ж без них.
- SQLite — это вообще, в рот меня чих-пых, детская шалость! Файлик один, и всё. Для того чтобы на коленке что-то сварганить — идеально, блядь.
- Oracle — ну, это для солидных дядек в пиджаках, у которых бюджеты овердохуищные.
А вот это уже с прикрученной левой ногой
Хочешь NoSQL или что-то экзотическое? Придётся, сука, искать пакеты на стороне. Это как принести в ресторан свою водку — вроде можно, но официант смотрит косо.
- MongoDB — через какого-то
djongo. - CockroachDB — через
django-cockroachdb(тараканобаза, блядь, смешное название). - Microsoft SQL Server — через
mssql-django.
И как это всё, сука, впихнуть в настройки?
Смотри, вот тебе священный текст, который в settings.py пишешь. Допустим, для Постгреса:
# settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql', # Движок, епта!
'NAME': 'mydatabase', # Как базу назвал
'USER': 'myuser', # Кто в неё влазит
'PASSWORD': 'mypassword', # Секретное слово, блядь
'HOST': '127.0.0.1', # Где эта база прячется
'PORT': '5432', # В какую дырку стучать
}
}
Но главное, что надо уяснить, ёбта!
Django-то ORM свою заточил под таблицы, связи, эти все JOIN'ы. А если ты её на NoSQL посадишь, то она как слон в посудной лавке: вроде ходит, но половину полок херачит по пути. Какие-то фичи просто накроются медным тазом, имей в виду.