Sobes.tech
Back to questions
Junior — Middle
64

Можно ли напрямую выполнять SQL-запросы в Django без использования ORM?

Answer from AI

sobes.tech AI

Да, в Django можно выполнять SQL-запросы напрямую, минуя ORM. Для этого используется метод raw() или объект connection из модуля django.db.

Пример с использованием raw():

from myapp.models import MyModel

# Выполнение произвольного SELECT-запроса
queryset = MyModel.objects.raw('SELECT * FROM myapp_mymodel WHERE some_field = %s', [value])
for obj in queryset:
    print(obj)

Для более сложных запросов (INSERT, UPDATE, DELETE) можно использовать курсор:

from django.db import connection

with connection.cursor() as cursor:
    cursor.execute("UPDATE myapp_mymodel SET some_field = %s WHERE id = %s", [new_value, obj_id])

Таким образом, Django позволяет гибко работать с базой данных, используя как ORM, так и чистый SQL.