python - 我什么时候应该在 Django 中使用 objects.raw()?

标签 python database django

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

相关文章:

python - 属性错误: 'MuParser' object has no attribute 'startRule'

python - 在 Python PyQt 桌面应用程序中安全地验证和授权用户

python ubuntu virtualenv -> 错误

php - (Laravel) 从一个表中获取数据,该表的 ID 与与该表链接的另一个表相对应

Django:M2M数据库注解查询

python - <lambda>() 接受 1 个位置参数,但给出了 2 个

java - 如何获取VoltDB中的查询结果

c# - 有没有办法返回创建的记录而无需再次查询数据库?

django - Git merge 忽略的迁移文件

jquery - Django:JSON 和 Internet Explorer 问题