我对Python很陌生,我已经看到了两者
Entries.objects.raw("SELECT * FROM register_entries")
和
Entries.objects.filter()
执行相同的查询。
在哪种情况下最好使用其中一种?
答案 0 :(得分:4)
这取决于您使用的数据库后端。第一个假设您有一个基于SQL的数据库引擎。这并非总是如此。相反,第二个将在任何情况下工作(如果后端是为其设计的)。例如,几年前有一个设计的LDAP后端,但LDAP查询根本不使用SQL语言。
在所有情况下,我建议您使用第二个。如果您想制作可重复使用的长期代码,这是更好的方法。
还有其他想法更喜欢第二个到第一个
但是,当您进行特定操作(调用特定后端的功能)时,有时您将不得不使用第一个,但尽可能地避免它们。
简而言之,请使用第二个!!!
答案 1 :(得分:1)
来自django documentation:
当模型查询API不够用时,您可以回退到编写原始SQL
对于所有方面,django queryset api为您提供了许多自定义查询的选项。但在某些情况下,您需要使用非常具体的查询,其中django api变得不足。但在使用原始SQL之前,最好阅读所有Queryset Api文档并了解有关django queryset api的所有内容。