为了账号安全,请及时绑定邮箱和手机立即绑定

原始 sql 查询和普通 sql 查询有什么区别?

原始 sql 查询和普通 sql 查询有什么区别?

慕桂英3389331 2022-06-22 17:47:58
我是 sql 和数据库的新手,目前正在 django 框架中开发网站。在阅读 django 文档期间,我阅读了有关使用 Manager.raw() 执行的原始 sql 查询,如下所示。for p in Person.objects.raw('SELECT * FROM myapp_person'): Manager.raw(raw_query, params=None, translations=None)原始查询与普通 sql 查询有何不同以及何时应该使用原始 sql 查询而不是 Django ORM?
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

Django(与其他类似的 ORM 工具一样)是关系数据库和面向对象编程之间的连接。它实现的一个非常重要的功能是为数据库提供一个统一的接口——无论底层数据库如何。

当您使用底层 Django 功能时,任何数据库都应支持该代码(对此可能有特定限制)。这使得移植到另一个数据库变得特别容易。它还有助于确保生成的查询符合您的预期。

当您使用原始 SQL 时,代码可能特定于一个数据库(产生移植问题)。代码也未检查,这可能导致难以理解的错误。

我非常喜欢直接使用 SQL——但那是因为我不是使用 ORM 框架的程序员。如果您要使用这样的框架,最好尽可能使用内置功能。


查看完整回答
反对 回复 2022-06-22
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

这是一个边缘意见问题,因此可能会被标记,但这是一个很好的观点。本质上,原始 SQL 查询仅用于 Django ORM 无法满足您的需求的边缘情况(并且随着每个新版本的 Django,它支持越来越多的查询类型,因此原始 SQL 变得不那么有用)。

一般来说,我建议使用 ORM 以获得更有用的错误消息、可维护性和简单易用性,并且仅将 raw 用作最后的手段


查看完整回答
反对 回复 2022-06-22
  • 2 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信