Skip to main content

Bringing all of PostgreSQL's awesomeness to Django.

Project description

: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
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
    

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

django-postgres-extra-2.0.9rc3.tar.gz (85.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_postgres_extra-2.0.9rc3-py3-none-any.whl (85.2 kB view details)

Uploaded Python 3

File details

Details for the file django-postgres-extra-2.0.9rc3.tar.gz.

File metadata

  • Download URL: django-postgres-extra-2.0.9rc3.tar.gz
  • Upload date:
  • Size: 85.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/6.3.0 pkginfo/1.9.6 requests/2.28.2 requests-toolbelt/0.10.1 tqdm/4.65.0 CPython/3.9.16

File hashes

Hashes for django-postgres-extra-2.0.9rc3.tar.gz
Algorithm Hash digest
SHA256 1d4f7152e5fd66787dbee02c921442161fd55e7f7c50b730505fb5b26d13c340
MD5 a597185b7a6469645c8e665ab29f7e6e
BLAKE2b-256 4e0f2a73efd2d1ac8c36dd400655bc4d37f211864b9396c2c0797ae9126c683a

See more details on using hashes here.

File details

Details for the file django_postgres_extra-2.0.9rc3-py3-none-any.whl.

File metadata

  • Download URL: django_postgres_extra-2.0.9rc3-py3-none-any.whl
  • Upload date:
  • Size: 85.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/6.3.0 pkginfo/1.9.6 requests/2.28.2 requests-toolbelt/0.10.1 tqdm/4.65.0 CPython/3.9.16

File hashes

Hashes for django_postgres_extra-2.0.9rc3-py3-none-any.whl
Algorithm Hash digest
SHA256 85ad5dcd0a4e1d80024536bf95e1df765112a462b5834d856d8037c040bf2431
MD5 61b0a76947358309d09709f47d34a1f7
BLAKE2b-256 df4e29b745e0653e3b161a3cc873d09f6f9df0d9ff6b8d9782a964db89ca77af

See more details on using hashes here.

Supported by

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