#23364: sql_queries from debug template context processor always empty -------------------------------+------------------------------------ Reporter: Markush2010 | Owner: nobody Type: Bug | Status: new Component: HTTP handling | Version: master Severity: Normal | Resolution: Keywords: | Triage Stage: Accepted Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 -------------------------------+------------------------------------ Changes (by aaugustin):
* needs_better_patch: => 0 * needs_docs: => 0 * component: Uncategorized => HTTP handling * needs_tests: => 0 * stage: Unreviewed => Accepted Comment: This is interesting. Here's the relevant template from the sample project. `mymodels` is a queryset and it isn't evaluated yet. `sql_queries` is set to `connection.queries` in the `debug` context processor. {{{ {% for mymodel in mymodels %} <li>{{ mymodel.foo }}</li> {% endfor %} <pre> {{ sql_queries }} {{ sql_queries|length }} </pre> }}} In Django 1.7, `connection.queries` is a list that gets updated with each new database query. If you print the list in the context processor, it's empty. But by the time you reach `{{ sql_queries }}` in the template, `{% for mymodel in mymodels %}` has triggered a query, and `{{ sql_queries }}` contains that query. In Django pre-1.8, `connection.queries` is a snapshot of the ring buffer that prevents unlimited memory consumption in long running processes. Once the snapshot is made, it isn't updated with new database queries. As a consequence, it's still empty when reaching `{{ sql_queries }}` in the template. I'm not sure what to do. Since it's common to have database queries triggered by templates in Django projects, this unintentional change of behavior will be considered a regression by most users. But having `{{ sql_queries }}` return different values depending on where you put it in the template isn't a good API either. -- Ticket URL: <https://code.djangoproject.com/ticket/23364#comment:1> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/069.765cc5de45fefceab4a0a56ede09f229%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.