Skip to main content
:white_check_mark: Tests CircleCI
:memo: License License
:package: PyPi PyPi
:four_leaf_clover: Code coverage Coverage Status
Django Versions 2.0, 2.1, 2.2, 3.0, 3.1, 3.2, 4.0, 4.1, 4.2, 5.0
Python Versions 3.6, 3.7, 3.8, 3.9, 3.10, 3.11
Psycopg Versions 2, 3
:book: Documentation Read The Docs
:warning: Upgrade Upgrade from v1.x
:checkered_flag: Installation Installation Guide
:fire: Features Features & Documentation
:droplet: Future enhancements Potential features

django-postgres-extra aims to make all of PostgreSQL's awesome features available through the Django ORM. We do this by taking care of all the hassle. As opposed to the many small packages that are available to try to bring a single feature to Django with minimal effort. django-postgres-extra goes the extra mile, with well tested implementations, seamless migrations and much more.

With seamless we mean that any features we add will work truly seamlessly. You should not have to manually modify your migrations to work with fields and objects provided by this package.


:warning: This README is for v2. See the v1 branch for v1.x.


Major features

See the full list

  • Native upserts

    • Single query
    • Concurrency safe
    • With bulk support (single query)
  • Extended support for HStoreField

    • Unique constraints
    • Null constraints
    • Select individual keys using .values() or .values_list()
  • PostgreSQL 11.x declarative table partitioning

    • Supports both range and list partitioning
  • Faster deletes

    • Truncate tables (with cascade)
  • Indexes

    • Conditional unique index.
    • Case sensitive unique index.

Working with the code

Prerequisites

  • PostgreSQL 10 or newer.
  • Django 2.0 or newer (including 3.x, 4.x).
  • Python 3.6 or newer.

Getting started

  1. Clone the repository:

     λ git clone https://github.com/SectorLabs/django-postgres-extra.git
    
  2. Create a virtual environment:

    λ cd django-postgres-extra
    λ virtualenv env
    λ source env/bin/activate
    
  3. Create a postgres user for use in tests (skip if your default user is a postgres superuser):

    λ createuser --superuser psqlextra --pwprompt
    λ export DATABASE_URL=postgres://psqlextra:<password>@localhost/psqlextra
    

    Hint: if you're using virtualenvwrapper, you might find it beneficial to put the export line in $VIRTUAL_ENV/bin/postactivate so that it's always available when using this virtualenv.

  4. Install the development/test dependencies:

    λ pip install .[test] .[analysis]
    
  5. Run the tests:

    λ tox
    
  6. Run the benchmarks:

    λ py.test -c pytest-benchmark.ini
    
  7. Auto-format code, sort imports and auto-fix linting errors:

    λ python setup.py fix
    

Release files for django-postgres-extra 2.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-postgres-extra 2.0.9
File Size Uploaded
django_postgres_extra-2.0.9.tar.gz 92.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-postgres-extra 2.0.9
File Interpreter ABI Platform
django_postgres_extra-2.0.9-py3-none-any.whl Python 3 none any Details

Total release size: 182.6 kB

Release files / django_postgres_extra-2.0.9.tar.gz

Download URL django_postgres_extra-2.0.9.tar.gz
Size 92.1 kB
Tags Source
SHA-256 checksum
How to use checksums
9e47c436d033712d0e2611b8c1583566dd4f97700e5360001bf3623913a92046
BLAKE2b-256 checksum
How to use checksums
02b00275caa2ced7a3eae3ccbe7fefcc062374e76edfcd2bf882840069f08ea3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/8.7.0 pkginfo/1.12.1.2 requests/2.32.4 requests-toolbelt/1.0.0 tqdm/4.67.1 CPython/3.9.17

Release files / django_postgres_extra-2.0.9-py3-none-any.whl

Download URL django_postgres_extra-2.0.9-py3-none-any.whl
Size 90.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0a4f9fd7f843e2ef5cfe7a291fcb883bd72d2ca8e4b369d0070866205e00b404
BLAKE2b-256 checksum
How to use checksums
fe0d2e611d8977b6dad077296b6880e8ee2d7d320e55f834601c6ad5eb87b982
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.7.1 importlib_metadata/8.7.0 pkginfo/1.12.1.2 requests/2.32.4 requests-toolbelt/1.0.0 tqdm/4.67.1 CPython/3.9.17

Release history Release notifications | RSS feed

This release

2.0.9 This release

2 release files

2.0.8

2 release files

2.0.6

2 release files

2.0.5

2 release files

2.0.4

2 release files

2.0.3

2 release files

2.0.2

1 release file

2.0.1

1 release file

2.0

1 release file

1.22

1 release file

1.20

1 release file

1.19

1 release file

1.17

1 release file

1.14

1 release file

1.13

1 release file

1.12

1 release file

1.11

1 release file

1.10

1 release file

1.9

1 release file

1.8

1 release file

1.7

1 release file

1.6

1 release file

1.5

1 release file

1.4

1 release file

1.3

1 release file

1.2

1 release file

1.1

1 release file

1.0

1 release file

0.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page