В современном мире технологии стали неотъемлемой частью нашей жизни, поскольку все вокруг нас оцифровано. Это также верно даже в деловом секторе. Компании, которые не используют правильную инфраструктуру и не могут оборудовать правильную технологическую архитектуру, в конечном итоге отстают от своих конкурентов. Это главным образом связано с тем, что в настоящее время объем данных, на которые предприятия и организации полагаются в своем анализе, вырос в геометрической прогрессии, и, как следствие, для того, чтобы они могли эффективно обрабатывать и интерпретировать их, им необходим правильный набор данных. инструментов и инфраструктуры для их поддержки.
Базы данных являются одной из самых популярных технологий, используемых для сбора и организации данных, поскольку они позволяют легко получить доступ к данным, управлять ими и обновлять их. Однако этим базам данных требуется система управления для выполнения этих задач. В основном язык SQL используется для выполнения операций в базе данных, однако по мере того, как ваше приложение растет и становится более сложным, становится чрезвычайно трудно иметь представление о том, что именно делает каждая операция. Именно здесь на сцену выходит техника объектно-реляционного сопоставления (ORM). Это позволяет запрашивать данные и манипулировать ими с помощью любого объектно-ориентированного языка программирования по вашему выбору. ORM уменьшают сложность вашего кода и делают его более понятным, что, в свою очередь, упрощает обновление, поддержку и повторное использование кода.
В этой статье мы рассмотрим Django ORM, который представляет собой ORM на основе Python и, следовательно, является одной из самых популярных технологий, используемых в наши дни.
Прежде чем мы перейдем к рассмотрению ORM Django, давайте сначала посмотрим, что на самом деле представляет собой эта технология Pythonic под названием Django.
Django — это бесплатный веб-фреймворк с открытым исходным кодом, разработанный на Python, поэтому он имеет очень чистый и аккуратный дизайн, а также простой, гибкий, надежный и масштабируемый. Он упрощает работу веб-разработчиков, поскольку предоставляет пользователям готовые компоненты, которые, в свою очередь, не позволяют им писать все с нуля и, как следствие, ускоряют их работу и сокращают накладные расходы на их веб-сайтах. В дополнение к этому, он чрезвычайно безопасен и помогает пользователям избежать проблем с безопасностью, таких как атаки восстановления пользовательского интерфейса, SQL-инъекции и т. д. У него также очень большое сообщество, которое всегда доступно через форумы и всегда готово предложить свою помощь другим.
Давайте теперь наконец посмотрим на Django ORM и некоторые из его основных функций.
После установки Django и настройки его проекта нам обычно предоставляются следующие исходные файлы:
Здесь mysite относится к имени созданного вами проекта. Все эти файлы используются по-своему, и важно знать, какую роль играет каждый файл. Здесь мы сосредоточимся на файле manage.py, который будет контролировать для нас множество различных вещей, таких как настройка сервера, выполнение миграций, связь с базой данных, а также вход в режим ORM.
Чтобы открыть Django ORM, откройте командную строку из основного каталога вашего проекта Django и выполните следующую команду:
$ python manage.py shell
Это откроет для нас интерактивную оболочку, которая позволит нам начать взаимодействие с базой данных с помощью ORM.
Поскольку ORM позволяет нам взаимодействовать с базой данных, теперь мы можем писать различные запросы для извлечения и управления данными из базы данных. Однако, прежде чем мы сможем начать работу с базой данных в оболочке, мы сначала должны импортировать все связанные с ней модели. Это можно сделать, просто запустив команду в интерактивной оболочке, как показано ниже:
$ from appName.models import modelName
Здесь appName относится к имени вашего приложения, которое вы создали, и, следовательно, где в настоящее время хранятся ваши модели. ModelName относится к имени модели, которую вы хотите импортировать и использовать. Здесь вы можете импортировать несколько моделей.
Теперь вы можете получить доступ к объекту модели и прочитать из него данные. Например, если нам нужен список всех сообщений, мы можем просто получить их, выполнив следующую команду в нашем терминале:
$ Post.objects.all()
В ORM мы можем делать несколько других вещей, таких как создание новых данных базы данных, обновление данных и все другие команды базы данных, которые вы можете.
Одна из лучших вещей, которые Django ORM предоставляет своим пользователям, — это возможность автоматически связывать и устанавливать отношения между атрибутами объекта вашей модели и соответствующими полями таблицы. В базах данных существуют в основном три типа отношений. это отношения «один к одному», отношения «один ко многим» или «многие к одному» и отношения «многие ко многим».
Отношение «один к одному», как следует из названия, означает, что запись одной таблицы соответствует одной записи другой таблицы. В Django ORM мы можем легко установить это следующим образом:
class Parent(models.Model): user = models.OneToOneField( User, on_delete=models.CASCADE, primary_key=True, ) name_of_father = models.CharField(max_length=100) name_of_mother = models.CharField(max_length=100)
Здесь у каждого пользователя могут быть только одинокие биологические родители, и, следовательно, это отношения один-к-одному. Теперь, если мы удалим любого пользователя, имеющего доступ к этой модели, он также удалит модель 2-го пользователя, поскольку они зависят друг от друга.
Отношения «один ко многим» или «многие к одному» относятся к отношениям, при которых родительская запись может иметь несколько дочерних записей, однако у нее может быть только один дочерний элемент или ни одного дочернего. В Django ORM мы можем легко установить эту связь с помощью поля ForeignKey:
class Customer(models.Model): name = models.CharField(max_length=255) class Vehicle(models.Model): customer = models.ForeignKey( Customer, on_delete=models.CASCADE )
Как видно из приведенного выше кода, у клиента может быть несколько транспортных средств.
Наконец, отношения «многие ко многим» определяют отношения, при которых несколько таблиц могут быть связаны друг с другом. Мы можем создать это с помощью поля ManyToMany. В приведенном ниже примере мы создали две модели: одну для пользователя, а другую — для его сообщений. Также может быть несколько пользователей, поскольку у каждого пользователя может быть несколько сообщений.
class User(models.Model): post = models.ManyToManyField(Post, blank=True) friends = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True) class Post(models.Model): post = models.TextField() likes = models.ManyToManyField(settings.AUTH_USER_MODEL, blank=True, related_name='user_likes')
Django ORM — чрезвычайно мощный инструмент, который значительно упростил работу веб-разработчиков. Он имеет множество функций, таких как манипулирование моделями базы данных, установление отношений между моделями и многое другое. Вкратце, Django ORM — одна из лучших вещей, поставляемых с Django, и очень эффективная при выполнении поставленной перед ним задачи.