Skip to main content

No project description provided

Project description

test-badge

pypgsync

Python utility to sync two postgresql databases

Installation

pip install pypgsync

Usage

Given two databases, pypgsync can determine which records differ. In the primarykey use case, records are identified by their primary key.

import psycopg
from pypgsync.mode.primarykey import delta_by_primary_key, apply_delta_by_primary_key

con_source = psycopg.connect(host="host_source", dbname="db_source", user="user_source", 
                             password="secret_source")
con_destination = psycopg.connect(host="host_destination", dbname="db_destination", 
                                  user="user_destination", password="secret_destination")

cur_source = con_source.cursor()
cur_destination = con_destination.cursor()

delta = delta_by_primary_key(cur_source=cur_source, cur_destination=cur_destination,
                                 table_name="products", primary_key="id",
                                 columns=["name", "count", "price"], pk_values=[1, 2, 3, 4, 5],)

delta provides an overview of the differences between the two database tables, in terms of which database operations (delete, insert, update) have to be applied to the destination database in order to match the source database. The primary key identifies the rows that have to be modified.

{
    "table_name": "products",
    "primary_key": "id",
    "intersection": set([1, 2]),
    "delete": set([3, ]),
    "insert": [{"id": 5, "name": "bread", "count": 5, "price": 3.2}],
    "update": [{"id": 2, "count": 20}, ]
}

delta can then be used to apply the necessary changes to the destination database.

from pypgsync.mode.primarykey import apply_delta_by_primary_key

apply_delta_by_primary_key(con_destination, delta)

After which the two database tables are identical within the column and primary key range specified.

To accomplish the sync in one step, use the sync_by_primary_key function.

from pypgsync.mode.primarykey import sync_by_primary_key
sync_by_primary_key(cur_source, con_destination, table_name="products", primary_key="id")

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

pypgsync-1.2.0.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

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

pypgsync-1.2.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file pypgsync-1.2.0.tar.gz.

File metadata

  • Download URL: pypgsync-1.2.0.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.14 Darwin/19.6.0

File hashes

Hashes for pypgsync-1.2.0.tar.gz
Algorithm Hash digest
SHA256 a040c6960c80595cb98f340ca4bc1eaaa79da24690a6f57eee4ebd7574e22ecc
MD5 81ca297f2b8fdcf1c93c9ef6629bd52e
BLAKE2b-256 79b02bc28ffa428928627a937cc9c801f14b9d2724ad8b5674d80b4ea1c6207e

See more details on using hashes here.

File details

Details for the file pypgsync-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: pypgsync-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.14 Darwin/19.6.0

File hashes

Hashes for pypgsync-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b87432723601f40a2da7050732a9bed44c441f10ccdd4028602abe944e506576
MD5 49f4e55ffe3f772750f8745721f950e6
BLAKE2b-256 d9ae8764e83945ea04a15627e7c4602c4cc3404899d77a2e3c54c714920b5285

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