Skip to main content

Tools to gather useful information from PostgreSQL

Project description

release lic ci coverage


Tools to gather useful information from PostgreSQL

This package can function both as Python module and as a command line utility. Command line interface can show gathered information in the form of tables or JSON.

Use it to gather information manually or in Continuous Integration.

Can give you some information on:

  • Index health (bloat, duplicates, unused, etc.);
  • Tables missing PKs and indexes.


SQLs used for inspections are available in


  • Python 3.6+
  • psycopg 2


; If you do not have psycopg2 yet, install it as `psycopg2` or `psycopg2-binary`.
; You may also want to install `envbox` to get PG connection settings from .env files.
$ pip install psycopg2-binary envbox

; If you want to use it just as Python module:
$ pip install pg_analyse

; If you want to use it from command line:
$ pip install pg_analyse[cli]



One can set PG_ANALYSE_DSN environment variable instead of explicitly passing DSN to connect to PostgreSQL. If envbox is installed this variable can be defined in .env file .

Python module

from pg_analyse.toolbox import Analyser, analyse_and_format

analyser = Analyser(dsn='user=test')

inspections =
inspection = inspections[0]


# Shortcut function is available:
out = analyse_and_format()


; Show known inspections and descriptions:
$ pg_analyse inspections

; Use DSN from the environment variable (see hint above),
; print out complex values (e.g. sizes) in human-friendly way:
$ pg_analyse run --human

; Run certain inspections, override default params
$ pg_analyse run --one idx_unused --one idx_bloat --args "idx_bloat:schema=my,bloat_min=20;idx_unused:schema=my"

; Use explicitly passed DSN:
$ pg_analyse run --dsn " port=6432 user=test password=xxx sslmode=verify-full sslrootcert=/home/my.pem"

; Output analysis result as json (instead of tables):
$ pg_analyse run --fmt json

Adding Inspections

To add a new inspection to pg_analyse:

  1. Compose SQL for inspection and put it into a file under sql/ directory.
  2. Add a subclass of Inspection into inspections/ Fill in alias, sql_name attributes (see docstrings in Inspection).

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for pg_analyse, version 0.3.0
Filename, size File type Python version Upload date Hashes
Filename, size pg_analyse-0.3.0-py2.py3-none-any.whl (24.6 kB) File type Wheel Python version 3.6 Upload date Hashes View
Filename, size pg_analyse-0.3.0.tar.gz (19.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page