Skip to main content

Native postgres bulk update and upsert operations.

Project description

django-pgbulk

django-pgbulk provides functions for doing native Postgres bulk upserts (i.e. UPDATE ON CONFLICT) and bulk updates.

Bulk upserts can distinguish between updated and created rows and optionally ignore redundant updates.

Bulk updates are true bulk updates, unlike Django's bulk_update which can still suffer from O(N) queries and can create poor locking scenarios.

Quick Start

Do a bulk upsert on a model:

import pgbulk

pgbulk.upsert(
    MyModel,
    [
        MyModel(int_field=1, some_attr="some_val1"),
        MyModel(int_field=2, some_attr="some_val2"),
    ],
    # These are the fields that identify the uniqueness constraint.
    ["int_field"],
    # These are the fields that will be updated if the row already
    # exists. If not provided, all fields will be updated
    ["some_attr"]
)

Do a bulk update on a model:

import pgbulk

pgbulk.update(
    MyModel,
    [
        MyModel(id=1, some_attr='some_val1'),
        MyModel(id=2, some_attr='some_val2')
    ],
    # These are the fields that will be updated. If not provided,
    # all fields will be updated
    ['some_attr']
)

View the django-pgbulk docs for more information.

Compatibility

django-pgbulk is compatible with Python 3.8 - 3.12, Django 3.2 - 4.2, Psycopg 2 - 3, and Postgres 12 - 16.

Documentation

View the django-pgbulk docs here

Installation

Install django-pgbulk with:

pip3 install django-pgbulk

After this, add pgbulk to the INSTALLED_APPS setting of your Django project.

Contributing Guide

For information on setting up django-pgbulk for development and contributing changes, view CONTRIBUTING.md.

Primary Authors

Project details


Download files

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

Source Distribution

django_pgbulk-2.0.4.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

django_pgbulk-2.0.4-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file django_pgbulk-2.0.4.tar.gz.

File metadata

  • Download URL: django_pgbulk-2.0.4.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.12.0 Linux/5.15.0-1039-aws

File hashes

Hashes for django_pgbulk-2.0.4.tar.gz
Algorithm Hash digest
SHA256 fdced562309a53d88f6112f694f6b9e2dd82b9f665a67bf88f81b851b637be3f
MD5 0c9d3cb89d19ddda03462b0952cbdce7
BLAKE2b-256 6ec91fc5fc4b5fcb7cc6c0fb22625d1c1e7850f7dbe1e914f299b24ab5c68fbf

See more details on using hashes here.

File details

Details for the file django_pgbulk-2.0.4-py3-none-any.whl.

File metadata

  • Download URL: django_pgbulk-2.0.4-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.12.0 Linux/5.15.0-1039-aws

File hashes

Hashes for django_pgbulk-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f5f26d36fd9e6ece9fdf4e6aee5b26a68ec9c4c306833c7586c0573cbe9b7fcc
MD5 3bfb3ed77f3de484460ddafa48f4536d
BLAKE2b-256 9f54e2e9abbed65559bddf330287bbf643bf92c714a9e681575eeed977382cd3

See more details on using hashes here.

Supported by

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