【发布时间】:2019-08-05 13:21:49
【问题描述】:
我知道 Django 对象关系映射器 (ORM) 有助于弥合数据库和执行原始查询的代码之间的差距。
但我想知道哪个更好 - Raw SQL Queries 或 Django QuerySet ORM。
所以我在User Table上查询-
from django.contrib.auth.models import User
然后我查询了 Django ORM QuerySet -
orm_query = User.objects.all()
orm_query
<QuerySet [<User: superadmin>]>
在 QuerySet 之后我用户 raw -
raw_query = User.objects.raw("select * from auth_user")
raw_query
<RawQuerySet: select * from auth_user>
然后我尝试使用.query 打印这些查询,它的输出 -
print(orm_query.query)
SELECT `auth_user`.`id`, `auth_user`.`password`, `auth_user`.`last_login`, `auth_user`.`is_superuser`, `auth_user`.`username`, `auth_user`.`first_name`, `auth_user`.`last_name`, `auth_user`.`email`, `auth_user`.`is_staff`, `auth_user`.`is_active`, `auth_user`.`date_joined` FROM `auth_user`
print(raw_query.query)
select * from auth_user
我发现orm_query 比raw_query 长得多。
我想知道哪个是最好的raw 或orm 查询。我应该使用哪个以获得最佳性能。它们之间有什么区别。
【问题讨论】:
-
在开发速度方面,使用内置的 Django ORM 会为您节省更多时间。
-
@DanielH。您的意思是说,为了提高开发速度,使用 django orm 和性能方面
raw将比queryset工作得更好 -
查看我的回答了解更多详情
标签: django django-queryset django-orm django-mysql