Ответ
Основной способ взаимодействия с базами данных в Django — использование встроенного ORM (Object-Relational Mapping). Этот подход позволяет разработчикам работать с данными как с Python-объектами, абстрагируясь от написания SQL-запросов напрямую.
Почему это удобно?
- Продуктивность: Код пишется быстрее и в объектно-ориентированном стиле.
- Переносимость: Легко переключаться между различными СУБД (PostgreSQL, MySQL, SQLite), не меняя код.
- Безопасность: ORM помогает предотвратить SQL-инъекции.
Процесс работы состоит из трех ключевых шагов:
-
Определение моделей в файле
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 -
Создание и применение миграций. Миграции — это файлы, которые описывают изменения в структуре БД.
# Создает файлы миграций на основе изменений в моделях python manage.py makemigrations # Применяет миграции к базе данных, создавая или изменяя таблицы python manage.py migrate -
Взаимодействие с данными через менеджер
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 их отфильтрует, как грязь из-под ногтей.
А работает это всё в три простых шага, как раз-два-три, в рот меня чих-пых:
-
Описание моделей. Идёшь в
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)" -
Миграции — это наше всё. Ты описал модель, но база-то об этом не знает! Нужно создать инструкции (миграции) и применить их.
# Эта команда смотрит на твои модели и говорит: "О, я вижу изменения! Сейчас запишу, что нужно сделать." python manage.py makemigrations # А эта команда берёт эти инструкции и говорит базе: "Так, дружок, перестраивайся по-новой!" python manage.py migrate -
Работа с данными. Всё готово, теперь можно творить! Основной инструмент — менеджер
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 была довольна, а там уж она сама со всем разберётся, хитрая жопа!