Discover possible N+1 queries in your code base during development
Project description
django_nplusone
Discover possible N+1 queries in Django ORM at runtime
The objective of this library is to help you discover any N+1s in your code at development time. Enable logging of warnings by following instructions shown in Usage section. Run your Django app as usual and you will see warning logs of any possible N+1s if found.
Installation
Install the package from PyPI using pip as following
pip install django_nplusone
Usage
Once package is installed, you can register the package in your settings.py as:
import nplusone
if DEBUG:
nplusone.show_nplusones()
This should start logging possible N+1s warnings using your logger configuration. The library uses standard python
logging module and uses logger by the name of nplusone.
Ignore specific warnings
You can ignore warning for a specific statement by ending the statement with # NO-NPLUSONE.
Test
You can test the N+1 warning logging by putting some code as shown below somewhere in your application code that you
know will get executed. Say you have a model User with a foreign key field org to Organization model.
user = User.objects.all()[0]
print(user.org)
You should see a log message with a message that looks like this:
... Possible N+1 for model: User, field: org, relationship: ForwardManyToOne, file: <?>, function: <?>, line: <?>, statement: <?>
where <?> will have correct values for the fields derived from call stack pointing you to the statement that has
possible N+1
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_nplusone-0.0.5.tar.gz.
File metadata
- Download URL: django_nplusone-0.0.5.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/2.7.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a35e7755e7ba020aadd53e20489261ea35c2299fc3f50a4942732e623f672d9
|
|
| MD5 |
53aefe8ae54151151a41e6d8997b699f
|
|
| BLAKE2b-256 |
4c8a9c57192bc5028bc345fab209dd5957431bb4ad3c6b2698382ce659abc699
|
File details
Details for the file django_nplusone-0.0.5-py2-none-any.whl.
File metadata
- Download URL: django_nplusone-0.0.5-py2-none-any.whl
- Upload date:
- Size: 5.5 kB
- Tags: Python 2
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.15.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/42.0.2 requests-toolbelt/0.9.1 tqdm/4.41.0 CPython/2.7.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09c01b47331118b503fb3cf6d65aa13cd3fec006a2602752c12640c2df994bd3
|
|
| MD5 |
0b234519364ba18086140cc64a96db95
|
|
| BLAKE2b-256 |
802f462d78024c63b8ce38efcfdd4d3526853cf7b61d3eca50396d93abd6d276
|