Запустите shell_plus команду с --print-sql параметром:
python manage.py shell_plus --print-sql
И попробуем выполнить некоторые команды.
Создание данных
Сначала создайте новый Employee объект и вызовите метод save() для вставки новой строки в таблицу:
e = Employee(first_name='John', last_name='Connor')
e.save()
В этом примере Django использует INSERT оператор для вставки новой строки в hr_employee таблицу.
Добавим второго сотрудника с именем Sarah и фамилией Connor:
e = Employee(first_name='Sarah', last_name='Connor')
e.save()
Теперь у нас есть две строки в hr_employee таблице.
Выбор данных
Чтобы выбрать все строки из hr_employees таблицы, вы используете all() такой метод:
Employee.objects.all()
Как это работает.
- Во-первых, Django использует
SELECTоператор для выбора строк изhr_employeeтаблицы. - Во-вторых, Django преобразует строки в
Employeeобъекты и возвращаетQuerySet, содержащийEmployeeобъекты.
Обратите внимание, что LIMIT Django добавляет 21 запись для отображения в оболочке.
Чтобы выбрать одну строку по идентификатору, вы можете использовать get() метод. Например, следующее возвращает сотрудника с идентификатором 1:
e = Employee.objects.get(id=1)
В отличие от all() метода, get() метод возвращает Employee объект вместо QuerySet.
Чтобы найти сотрудников по имени, можно использовать filter() метод объекта QuerySet. Например, следующее находит сотрудников по имени John:
Employee.objects.filter(first_name='John')
Обновление данных
Сначала выберите сотрудника с идентификатором 2:
e = Employee.objects.get(id=2)
Обновите фамилию выбранного сотрудника на Smith:
e.last_name = 'Smith'
e.save()
Удаление данных
Чтобы удалить экземпляр модели, вы используете delete() метод. В следующем примере удаляется сотрудник с идентификатором 2, так как в прошлом абзаце мы его выбрали:
e.delete()
Чтобы удалить все экземпляры модели, вы используете all() метод для выбора всех сотрудников и вызываете delete() метод для удаления всех выбранных сотрудников:
Employee.objects.all().delete()
Django использует DELETE оператор без предложения WHERE, чтобы удалить все строки из hr_employee таблицы.
Краткое содержание
- Django ORM позволяет вам взаимодействовать с реляционными базами данных с помощью Python.
- Используйте
all()метод, чтобы получить все строки из таблицы. - Используйте
get()метод для выбора строки по идентификатору. - Используйте
filter()метод для фильтрации строк по одному или нескольким полям. - Используйте
save()метод для создания новой строки или обновления существующей строки. - Используйте
delete()метод для удаления одной или нескольких строк из таблицы.