Skip to main content

A collection of Python utility functions for ingesting data into SQLAlchemy-defined PostgreSQL tables, automatically migrating them as needed, and minimising locking

Project description

pg-bulk-ingest

PyPI package Test suite Code coverage

A Python utility function for ingesting data into SQLAlchemy-defined PostgreSQL tables, automatically migrating them as needed, allowing concurrent reads as much as possible.

Allowing concurrent writes is not an aim of pg-bulk-ingest. It is designed for use in ETL pipelines where PostgreSQL is used as a data warehouse, and the only writes to the table are from pg-bulk-ingest. It is assumed that there is only one pg-bulk-ingest running against a given table at any one time.

Features

pg-bulk-ingest exposes a single function as its API that:

  • Creates the tables if necessary
  • Migrates any existing tables if necessary, minimising locking
  • Ingests data in batches, where each batch is ingested in its own transaction
  • Handles "high-watermarking" to carry on from where a previous ingest finished or errored
  • Optionally performs an "upsert", matching rows on primary key
  • Optionally deletes all existing rows before ingestion
  • Optionally calls a callback just before each batch is visible to other database clients

Visit the pg-bulk-ingest documentation for usage instructions.

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

pg_bulk_ingest-0.1.3.tar.gz (23.0 kB view details)

Uploaded Source

Built Distribution

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

pg_bulk_ingest-0.1.3-py3-none-any.whl (23.9 kB view details)

Uploaded Python 3

File details

Details for the file pg_bulk_ingest-0.1.3.tar.gz.

File metadata

  • Download URL: pg_bulk_ingest-0.1.3.tar.gz
  • Upload date:
  • Size: 23.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pg_bulk_ingest-0.1.3.tar.gz
Algorithm Hash digest
SHA256 df18d58a4f27d3e5ac6b1e97c4deb23305210eae9ab8c3b987967448853c0ba5
MD5 d4a4d8e66e09999af68efdcdd93809c9
BLAKE2b-256 4f0486a4c07e9ccc9023c7a4d950217103ea7569d9b6e439c3e1f7dd1d89f261

See more details on using hashes here.

Provenance

The following attestation bundles were made for pg_bulk_ingest-0.1.3.tar.gz:

Publisher: deploy-package-to-pypi.yml on uktrade/pg-bulk-ingest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pg_bulk_ingest-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: pg_bulk_ingest-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 23.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pg_bulk_ingest-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 112a7a6827a818d8f7e5995f515a0e641a8c86f0b5a4cc91b7897639c80eff0a
MD5 8ae24605d449c5048c57d2e95749f1aa
BLAKE2b-256 e182c7d75a9f9156497e5f2fbaafa9c7891c2d040500a700d5cde6c6c6bd10a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for pg_bulk_ingest-0.1.3-py3-none-any.whl:

Publisher: deploy-package-to-pypi.yml on uktrade/pg-bulk-ingest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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