Bringing all of PostgreSQL's awesomeness to Django.
:white_check_mark: | Tests | |
:memo: | License | |
:package: | PyPi | |
:four_leaf_clover: | Code coverage | |
Django Versions | 2.0, 2.1, 2.2, 3.0, 3.1, 3.2, 4.0, 4.1 | |
Python Versions | 3.6, 3.7, 3.8, 3.9, 3.10 | |
: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.
Native upserts
Extended support for HStoreField
.values()
or .values_list()
PostgreSQL 11.x declarative table partitioning
Faster deletes
Indexes
Clone the repository:
λ git clone https://github.com/SectorLabs/django-postgres-extra.git
Create a virtual environment:
λ cd django-postgres-extra
λ virtualenv env
λ source env/bin/activate
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.
Install the development/test dependencies:
λ pip install .[test] .[analysis]
Run the tests:
λ tox
Run the benchmarks:
λ py.test -c pytest-benchmark.ini
Auto-format code, sort imports and auto-fix linting errors:
λ python setup.py fix