• Stars
    star
    627
  • Rank 71,654 (Top 2 %)
  • Language
    Python
  • License
    MIT License
  • Created almost 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Bringing all of PostgreSQL's awesomeness to Django.

django-postgres-extra

Tests CircleCI
📝 License License
📦 PyPi PyPi
🍀 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
📖 Documentation Read The Docs
⚠️ Upgrade Upgrade from v1.x
🏁 Installation Installation Guide
🔥 Features Features & Documentation
💧 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.


⚠️ 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
    

More Repositories

1

django-localized-fields

Implementation of localized model fields using PostgreSQL HStore fields.
Python
68
star
2

celery-cloudwatch

Uploads results of Celery tasks to AWS CloudWatch.
Python
41
star
3

heroku-buildpack-git-submodule

🦆 Adding support for Git submodules to Heroku apps.
Shell
36
star
4

babel-plugin-transform-named-imports

Transforms named imports into (default) full path imports.
JavaScript
36
star
5

keycloak-mock

Node.js package for mocking a Keycloak server in unit tests.
TypeScript
18
star
6

terraform-provider-algolia

A Terraform provider for Algolia.
Go
11
star
7

postcss-inline-class

A webpack plugin to inline CSS classes in other CSS classes using postcss
JavaScript
8
star
8

seo-slip

Catches SEO regressions by sampling and checking a website against a set of rules
JavaScript
5
star
9

heroku-rectifier

Autoscale Heroku dynos based on RabbitMQ queue lengths
Python
4
star
10

django-template-minifying-loader

Simple template minifier for Django
Python
3
star
11

lingui-multi

A command line utility to generate multiple sub-catalogs for i18n from js-lingui message catalog.
JavaScript
3
star
12

react-slim-media-query

A really lightweight CSS media query component for React.
JavaScript
2
star
13

django-db-connection-retrier

Automatically re-establish Django's database connection when it fails due to DNS errors.
Python
2
star
14

react-native-transformer-inline-images

Transformer for Metro that inlines image assets into the bundle.
JavaScript
1
star
15

react-native-international-number-input

A numeric input field for react-native with support for different numeral systems.
TypeScript
1
star
16

sentry-source-maps-webpack-plugin

Upload source maps to Sentry automatically.
JavaScript
1
star
17

django-cached-auth-middleware

Drop-in replacement for django.contrib.auth.middleware.AuthenticationMiddleware, with cached request.user
Python
1
star
18

py-phone-number-fmt

Sanitize, validate and format phone numbers into E.164 valid phone numbers.
Python
1
star