Каков основной способ работы с базами данных в Django?

Ответ

Основной способ взаимодействия с базами данных в Django — использование встроенного ORM (Object-Relational Mapping). Этот подход позволяет разработчикам работать с данными как с Python-объектами, абстрагируясь от написания SQL-запросов напрямую.

Почему это удобно?

  • Продуктивность: Код пишется быстрее и в объектно-ориентированном стиле.
  • Переносимость: Легко переключаться между различными СУБД (PostgreSQL, MySQL, SQLite), не меняя код.
  • Безопасность: ORM помогает предотвратить SQL-инъекции.

Процесс работы состоит из трех ключевых шагов:

  1. Определение моделей в файле models.py приложения. Модель — это Python-класс, который представляет таблицу в базе данных.

    from django.db import models
    
    class Product(models.Model):
        name = models.CharField(max_length=200)
        price = models.DecimalField(max_digits=10, decimal_places=2)
        is_available = models.BooleanField(default=True)
    
        def __str__(self):
            return self.name
  2. Создание и применение миграций. Миграции — это файлы, которые описывают изменения в структуре БД.

    # Создает файлы миграций на основе изменений в моделях
    python manage.py makemigrations
    
    # Применяет миграции к базе данных, создавая или изменяя таблицы
    python manage.py migrate
  3. Взаимодействие с данными через менеджер objects.

    # Создание объекта (INSERT)
    new_product = Product.objects.create(name='Laptop', price=1200.00)
    
    # Получение объектов (SELECT)
    laptops = Product.objects.filter(name__icontains='Laptop')
    
    # Обновление объекта (UPDATE)
    product_to_update = Product.objects.get(id=1)
    product_to_update.price = 1150.00
    product_to_update.save()
    
    # Удаление объекта (DELETE)
    Product.objects.get(id=2).delete()

Настройки подключения к базе данных находятся в словаре DATABASES в файле settings.py.

Ответ 18+ 🔞

Ну, слушай, а как вообще с базами данных в Django работать? А, блядь, да всё просто, как три копейки! Там же есть встроенная штука — ORM, или, по-русски, объектно-реляционное отображение. Это такая магия, которая позволяет тебе не писать эти ебучие SQL-запросы от руки, а работать с данными как с обычными питоновскими объектами. Представь, ты не пишешь SELECT * FROM product WHERE price > 1000, а просто делаешь Product.objects.filter(price__gt=1000). Красота же, ёпта!

И зачем это всё, спросишь?

  • Скорость: Код пишешь в разы быстрее, всё в объектном стиле, мозг не вытекает.
  • Гибкость: Захотел с SQLite на PostgreSQL переехать? Да похуй! Меняешь одну строчку в настройках, и всё работает. ORM сам подстроится, блядь.
  • Безопасность: Про SQL-инъекции можешь вообще забыть. ORM их отфильтрует, как грязь из-под ногтей.

А работает это всё в три простых шага, как раз-два-три, в рот меня чих-пых:

  1. Описание моделей. Идёшь в models.py своего приложения и описываешь, как твоя таблица должна выглядеть. Каждый класс — это таблица, атрибуты — колонки.

    from django.db import models
    
    class Product(models.Model):
        name = models.CharField(max_length=200)  # Название, строка
        price = models.DecimalField(max_digits=10, decimal_places=2)  # Цена, десятичное
        is_available = models.BooleanField(default=True)  # В наличии? Да/нет
    
        def __str__(self):
            return self.name  # Чтобы в админке читаемо отображалось, а не "Product object (1)"
  2. Миграции — это наше всё. Ты описал модель, но база-то об этом не знает! Нужно создать инструкции (миграции) и применить их.

    # Эта команда смотрит на твои модели и говорит: "О, я вижу изменения! Сейчас запишу, что нужно сделать."
    python manage.py makemigrations
    
    # А эта команда берёт эти инструкции и говорит базе: "Так, дружок, перестраивайся по-новой!"
    python manage.py migrate
  3. Работа с данными. Всё готово, теперь можно творить! Основной инструмент — менеджер objects у каждой модели.

    # Создаём новый товар (INSERT в базу)
    new_product = Product.objects.create(name='Ноутбук', price=1200.00)
    
    # Ищем все ноутбуки (SELECT ... WHERE name LIKE '%Laptop%')
    laptops = Product.objects.filter(name__icontains='Ноутбук')
    
    # Нашли товар, обновляем цену (UPDATE)
    product_to_update = Product.objects.get(id=1)
    product_to_update.price = 1150.00
    product_to_update.save()  # Не забудь сохранить, а то нихуя не изменится!
    
    # Удаляем ненужное (DELETE)
    Product.objects.get(id=2).delete()  # И нет его, в пизду!

А где же, блядь, настройки самой базы? Да всё в том же settings.py, в словаре DATABASES. Там укажешь движок, имя базы, логин-пароль — обычное дело. Главное, чтобы ORM была довольна, а там уж она сама со всем разберётся, хитрая жопа!