Django "lazy query execution"原理

标签 django database

如果Django不使用“延迟查询执行”原则,主要问题是什么?

 q = Entry.objects.filter(headline__startswith="What")
 q = q.filter(pub_date__lte=datetime.date.today())
 q = q.exclude(body_text__icontains="food")
 print(q)

当 print(q) 执行时,它会访问数据库。

最佳答案

可能会发生一些问题,

  • 如果 django 通过 q = Entry.objects.filter(headline__startswith="What") 命中,那么它必须需要将 QueryDict 存储到 q 中。出于这个简单的原因,它带来了一些大问题,例如数据类型、内存、时间复杂度 bla bla bla :(

  • 在那之后,您将无法获得那个很棒的功能 q.filter(.....)。因为当时已经有 value 所以,它不是一个可能的架构。但现在它正在存储对象,而且变量的行为也像一个对象。

关于Django "lazy query execution"原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40827674/

相关文章:

django - 您如何卡住未卡住的模型以便您可以继续使用 South?

c# - 如何从物理上查看 Windows Phone 8.1 SQLite PCL 数据库

mysql - mysql 连接困难(空值未显示)

python - 无法使用_set查询外键相关对象| Django ?

Django ORM 连接无需外键且无需原始查询

python - 在 Django 中创建 OneToMany 模型

database - Web 应用程序部署和多个版本

mysql - 被删除的行占用的空间会被重新使用吗?

sql - PostgreSQL : set timestamp to null

django - Django 中的数据库本地化