我是 Python 的新手,但我都见过
Entries.objects.raw("SELECT * FROM register_entries")
和
Entries.objects.filter()
做同样的查询。
在哪些情况下使用其中一种更好?
最佳答案
这取决于您使用的数据库后端。第一个假设您有一个基于 SQL 的数据库引擎。这并不总是正确的。相反,第二个在任何情况下都可以工作(如果后端是为此设计的)。例如几年前有一个 LDAP 后端是这样设计的,但是 LDAP 查询根本不使用 SQL 语言。
在所有情况下,我建议您使用第二种。如果您想制作可重用的长期代码,这是更好的方法。
还有其他想法比第一个更喜欢第二个
- 避免可能的 SQL 注入(inject);
- 无需了解数据库设计(表名、字段名);
- 通用代码优于特定代码;
- 而且,它更短...
但有时你在做特定操作(调用特定后端的函数)时会不得不使用第一个,但尽量避免使用它们。
简而言之,使用第二个!!!
关于python - 我什么时候应该在 Django 中使用 objects.raw()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17380669/