Opened 8 years ago
Last modified 8 years ago
#28035 new New feature
Help Django Programmer to link a Query in their database logs with the Python lines of code that generated the request. — at Version 2
Reported by: | Rémy Hubscher | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 1.10 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
The QuerySet creation and the QuerySet execution doesn't happens at the same time in Django.
However when you want to link a query in your database logs with your Python code, you want to see where the QuerySet have been created as well as were it was executed.
Each time you call a new method on your queryset it will create a new queryset with the new filter or order_by or annotate calls.
The plan would be to keep track of all these calls that generated a new QuerySet and to add it as a database comment when executing the request.
Then you would be able to link easily where your request have been generated from in your python code.
SELECT * FROM users WHERE id = 1; -- users/views.py L.21 `user = Users.objects.get(pk=request.user.id)`
It is especially useful when you create conditionals QuerySet:
SELECT * FROM users WHERE name LIKE 'enac%' ORDER BY username; -- users/views.py L.18 `qs = Users.objects.all() \n users/views.py L.25 `qs = qs.filter(name__startswith="enac")` \n users/views.py L.30 `qs = qs.order_by('username')` \n templates/user_search.html L.55 `{% for user in users %}`
If we want to do that as a library outside of Django, it means we would have to monkey patch the QuerySet object.
Do we want to make it a Django Feature?
We could add the comment only when DEBUG = True
or DATABASE_QUERY_LOGS = True
Change History (2)
comment:1 by , 8 years ago
Summary: | Help Django Programmer to link a Query in their database logs with the Python line of codes that generated the request. → Help Django Programmer to link a Query in their database logs with the Python lines of code that generated the request. |
---|
comment:2 by , 8 years ago
Component: | Uncategorized → Database layer (models, ORM) |
---|---|
Description: | modified (diff) |
Type: | Uncategorized → New feature |
I'm not sure if this is feasible to implement. How would it work?