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

标签 python sql django

我是 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?

最佳答案

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

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

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

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

关于python - 原始 sql 查询和普通 sql 查询有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58351809/

相关文章:

python - 如何从django中的manage.py调用不同的设置

python - 有没有像 railsapi.com 这样好的 Python 文档浏览器

python - 使用 python 在 PERSONAL.XLSB 中运行宏

Python 守护进程死掉

sql - 当查询返回多行时,Oracle extractValue 失败

sql - Postgres 从字符串运行 SQL 语句

sql - 如何根据条件加入不同的字段

javascript - 属性错误: 'NoneType' object has no attribute 'is_active'

django - 将字段添加到序列化器上下文

python - 鸭嘴兽的奇怪问题(从脚本制作 .app 包)