Database migration tool for asyncpg
Project description
Pogo migrate - asyncpg migration tooling
pogo-migrate
assists with maintaining your database schema (and data if
required) as it evolves. Pogo supports migrations written in raw sql, as well
as python files (useful when data needs to be migrated).
A migration can be as simple as:
-- a descriptive message
-- depends: 20210101_01_abcdef-previous-migration
-- migrate: apply
CREATE TABLE foo (id INT, bar VARCHAR(20), PRIMARY KEY (id));
-- migrate: rollback
DROP TABLE foo;
Pogo manages these migration scripts and provides command line tools to apply, rollback and show migration history.
Configuration
Add pogo to pyproject.toml
[tool.pogo]
migrations_location = "./migrations"
database_config = "{POSTGRES_DSN}"
If you have an existing environment with separate configuration values for postgres, you can build the DSN in config.
[tool.pogo]
migrations_location = "./migrations"
database_config = "postgres://{POSTGRES_USER}:{POSTGRES_PASSWORD}@{POSTGRES_HOST}:{POSTGRES_PORT}/{PORTGRES_DATABASE}"
New migrations
To create a new migration use pogo new
. This will template out the migration
file and open the file in your configured text editor (vi
by default).
Supported flags:
--sql
generate a sql migration (defaults to.py
)--no-interactive
skip the editor step and just write the migration template to the migrations directory.
$ pogo new -m "a descriptive message"
Testing
To assist in testing, pogo-migrate
provides the pogo_migrate.testing
module. The apply/rollback methods in the testing module will pick up your
configuration and connect to the configured test database based on environment
variables, or you can provide a database connection directly.
import asyncpg
import pogo_migrate.testing
@pytest.fixture(scope="session")
async def _engine(config): # noqa: PT005
db = await asyncpg.connect(config.my_postgres_dsn)
await pogo_migrate.testing.apply(db)
yield
await pogo_migrate.testing.rollback(db)
Alternatively add pytest-pogo
to your test dependencies and use the provided
fixture pogo_engine
which will apply and rollback your migrations for your
test session, like the above example.
Thanks and Credit
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file pogo_migrate-0.0.11.tar.gz
.
File metadata
- Download URL: pogo_migrate-0.0.11.tar.gz
- Upload date:
- Size: 13.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.5.0-1016-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 672b4232660d79a0210e3efec347395baa9057af46cb234a7af0a23817727dee |
|
MD5 | a40b3f0dd02ed26f54eb087c2cf6038f |
|
BLAKE2b-256 | 843921c8c42f5098612a1d6166af8b15cb618acde59ec165f293fd231133a515 |
Provenance
File details
Details for the file pogo_migrate-0.0.11-py3-none-any.whl
.
File metadata
- Download URL: pogo_migrate-0.0.11-py3-none-any.whl
- Upload date:
- Size: 15.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.11.8 Linux/6.5.0-1016-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0f385966b956ade6bc79fcc58a51a032f2c2c690943f45ab1d69b17dc099f06 |
|
MD5 | b9b2f415a261dcb087834104f21cec3c |
|
BLAKE2b-256 | 4c4151f8d0d6c9d3fc940bccd8facdcda6fbc6330824d01a6bec1e3146cb4528 |