Какие базы данных поддерживает Django?

Ответ

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 посадишь, то она как слон в посудной лавке: вроде ходит, но половину полок херачит по пути. Какие-то фичи просто накроются медным тазом, имей в виду.