В чем разница между необработанными SQL-запросами и обычными SQL-запросами? - PullRequest
3 голосов
/ 12 октября 2019

Я новичок в SQL и базе данных, и в настоящее время разрабатываю веб-сайт в среде Django.

Во время чтения документации Django я прочитал о необработанных SQL-запросах, которые выполняются с помощью Manager.raw (), как показано ниже.

for p in Person.objects.raw('SELECT * FROM myapp_person'):
Manager.raw(raw_query, params=None, translations=None)

Чем необработанные запросы отличаются от обычных SQL-запросов и когда я должен использовать необработанные SQL-запросы вместо Django ORM?

Ответы [ 2 ]

3 голосов
/ 12 октября 2019

Django (как и другие подобные инструменты ORM) - это связь между реляционными базами данных и объектно-ориентированным программированием. Одной из очень важных функций, которые он реализует, является предоставление унифицированного интерфейса к базе данных - независимо от базовой базы данных.

Когда вы используете базовую функциональность Django, код должен поддерживаться в любой базе данных (может бытьконкретные ограничения на это). Это делает его особенно легко портировать на другую базу данных. Это также помогает гарантировать, что сгенерированные запросы будут выполнять то, что вы намерены.

Когда вы используете сырой SQL, код, вероятно, будет специфичным для одной базы данных (создавая проблему переноса). Код также не проверяется, что может привести к трудным для понимания ошибкам.

У меня есть сильное предпочтение использовать SQL напрямую, но это потому, что я не программист, использующий среду ORM. Если вы собираетесь использовать такую ​​платформу, лучше использовать встроенную функциональность везде, где это возможно.

2 голосов
/ 12 октября 2019

Это пограничный вопрос, поэтому он может быть помечен, но это хороший момент. По сути, необработанные запросы SQL предназначены для использования только в крайних случаях, когда Django ORM не удовлетворяет вашим потребностям (и с каждой новой версией Django он поддерживает все больше и больше типов запросов, поэтому raw становится менее полезным).

В целом, я бы предложил использовать ORM для более полезных сообщений об ошибках, удобства обслуживания и простоты использования, и использовать raw только в качестве последнего средства

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...