Tools for generating on-the-fly migrations between PostgreSQL schemas.
import psycopg2
from pypgdiff.objects import Database, Schema
conn = psycopg2.connect(database=x, user=y, password=z)
# the source of truth
source_schema = Schema(database=Database(conn=conn, name="source_schema")
# the target to change
target_schema = Schema(database=Database(conn=conn, name="target_schema")
# changeset will be sorted
changes = source_schema | target_schema
for change in changes:
sql = change.sql
Diffs can be configured with the Config context manager:
from pypgdiff import Config
with Config(prompt_for_defaults=True):
changes = source_schema | target_schema
The following config options are available:
-
no_alter_sequences ~ Do not include ALTER SEQUENCE changes. This is primarily useful to suppress sequence restarts, which are probably not useful. Default: False
-
normalize_constraints ~ When comparing constraints, use an automagically generated name to avoid generating unnecessary constraint queries. Default: False
-
prompt_for_defaults ~ When altering a column to be not NULL, prompt the user for a defailt value to use. Default: False