我对 sql 和数据库有点陌生,目前正在 django 框架中开发网站。
在阅读 django 文档期间,我阅读了有关使用 Manager.raw() 执行的原始 sql 查询的信息,如下所示。
for p in Person.objects.raw('SELECT * FROM myapp_person'):
Manager.raw(raw_query, params=None, translations=None)
Run Code Online (Sandbox Code Playgroud)
原始查询与普通 sql 查询有何不同以及何时应该使用原始 sql 查询而不是 Django ORM?
Django(与其他类似的 ORM 工具一样)是关系数据库和面向对象编程之间的连接。它实现的非常重要的功能之一是为数据库提供统一的接口——无论底层数据库是什么。
当您使用底层 Django 功能时,任何数据库都应该支持该代码(对此可能有特定限制)。这使得移植到另一个数据库变得特别容易。它还有助于确保生成的查询符合您的预期。
当您使用原始 SQL 时,代码可能特定于一个数据库(产生移植问题)。代码也没有经过检查,这可能会导致难以理解的错误。
我非常喜欢直接使用 SQL —— 但那是因为我不是使用 ORM 框架的程序员。如果您打算使用这样的框架,最好尽可能使用内置功能。
| 归档时间: |
|
| 查看次数: |
3328 次 |
| 最近记录: |