Skip to main content

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

django_nplusone-0.0.5.tar.gz (4.3 kB view details)

Uploaded Source

Built Distribution

django_nplusone-0.0.5-py2-none-any.whl (5.5 kB view details)

Uploaded Python 2

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

Hashes for django_nplusone-0.0.5.tar.gz
Algorithm Hash digest
SHA256 1a35e7755e7ba020aadd53e20489261ea35c2299fc3f50a4942732e623f672d9
MD5 53aefe8ae54151151a41e6d8997b699f
BLAKE2b-256 4c8a9c57192bc5028bc345fab209dd5957431bb4ad3c6b2698382ce659abc699

See more details on using hashes here.

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

Hashes for django_nplusone-0.0.5-py2-none-any.whl
Algorithm Hash digest
SHA256 09c01b47331118b503fb3cf6d65aa13cd3fec006a2602752c12640c2df994bd3
MD5 0b234519364ba18086140cc64a96db95
BLAKE2b-256 802f462d78024c63b8ce38efcfdd4d3526853cf7b61d3eca50396d93abd6d276

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page