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