No project description provided
Project description
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a040c6960c80595cb98f340ca4bc1eaaa79da24690a6f57eee4ebd7574e22ecc
|
|
| MD5 |
81ca297f2b8fdcf1c93c9ef6629bd52e
|
|
| BLAKE2b-256 |
79b02bc28ffa428928627a937cc9c801f14b9d2724ad8b5674d80b4ea1c6207e
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b87432723601f40a2da7050732a9bed44c441f10ccdd4028602abe944e506576
|
|
| MD5 |
49f4e55ffe3f772750f8745721f950e6
|
|
| BLAKE2b-256 |
d9ae8764e83945ea04a15627e7c4602c4cc3404899d77a2e3c54c714920b5285
|