1
1
mirror of https://github.com/yandex/pgmigrate.git synced 2024-07-07 09:16:22 +03:00
Simple tool to evolve PostgreSQL schema easily.
Go to file
2024-07-06 16:40:44 +02:00
.github/workflows Add a workaround for gh actions dropping python 2.7 support 2023-06-21 23:14:50 +03:00
doc Add version gaps check 2021-12-29 12:08:31 +03:00
features Add an option to show only unapplied migrations in info 2024-07-06 14:23:59 +02:00
.gitignore First opensource version - PGmigrate 1.0.0 2016-10-03 18:52:42 +03:00
.isort.cfg First opensource version - PGmigrate 1.0.0 2016-10-03 18:52:42 +03:00
.pylintrc Allow reordering setting schema version and afterEach callback 2023-12-31 20:25:29 +03:00
AUTHORS Allow using subdirs in migrations folder 2018-04-03 06:03:44 +03:00
Dockerfile Move dockerfile to postgresql 16 2023-12-31 18:30:37 +03:00
LICENSE First opensource version - PGmigrate 1.0.0 2016-10-03 18:52:42 +03:00
Makefile First opensource version - PGmigrate 1.0.0 2016-10-03 18:52:42 +03:00
pgmigrate.py Add an option to show only unapplied migrations in info 2024-07-06 14:23:59 +02:00
README.md Release 1.0.9 2024-07-06 16:40:44 +02:00
run_test.sh Use application_name instead of backend pid for conflict termination. 2019-11-02 02:31:24 +03:00
setup.py Release 1.0.9 2024-07-06 16:40:44 +02:00
tox.ini Update copyrights for 2024 2024-01-02 04:17:53 +03:00

PyPI version Build Status

PGmigrate

PostgreSQL migrations made easy

Overview

PGmigrate is a database migration tool developed by Yandex.

PGmigrate has the following key-features:

  • Transactional and nontransactional migrations: you can enjoy whole power of PostgreSQL DDL
  • Callbacks: you can run some DDL on specific steps of migration process (e.g. drop some code before executing migrations, and create it back after migrations were applied)
  • Online migrations: you can execute series of transactional migrations and callbacks in a single transaction (so, if something goes wrong simple ROLLBACK will bring you in consistent state)

Install

pip install yandex-pgmigrate

Running tests

Tests require running PostgreSQL instance with superuser (to create/drop dbs). You could setup this yourself and use tox to start tests:

tox

Second option is to use docker and make:

make test

How to use

Complete manual is here.

Release history

  • 1.0.9 (2024-07-06)
    • Add an option to show only unapplied migrations in info
  • 1.0.8 (2024-03-08)
    • Allow reordering setting schema version and afterEach callback
  • 1.0.7 (2022-02-02)
    • Skip unnecessary schema creation on init
    • Add file path to statement apply error log
    • Add version gaps check
  • 1.0.6 (2020-10-29)
    • Make dsn manipulations more robust
    • Fix empty values-related bugs in config and args parsing
  • 1.0.5 (2020-02-29)
    • Use application_name instead of backend pid for conflict termination
  • 1.0.4 (2019-04-14)
    • Allow using subdirs in migrations folder
  • 1.0.3 (2017-12-28)
    • Fix migration error with comment at the end of file
    • Add blocking pids termination
    • Some minor fixes and improvements
  • 1.0.2 (2017-04-05)
    • Speed up get_info function a bit
    • Fix callbacks in transactional/nontransactional migrations mix on db init
  • 1.0.1 (2017-04-01)
    • Fix bug with python format patterns in migration text
    • Sort info command output by version
    • Support 'latest' target version
    • Add option to override user in migration meta
    • Fix info command fail without target on initialized database
    • Add session setup option
  • 1.0.0 (2016-10-03)
    • First opensource version

License

Distributed under the PostgreSQL license. See LICENSE for more information.