A sqlalchemy/alembic extension for migrating procedures and views
Project description
Alembic Utils
Documentation: https://olirice.github.io/alembic_utils
Source Code: https://github.com/olirice/alembic_utils
Autogenerate Support for PostgreSQL Functions, Views, Materialized View, Triggers, and Policies
Alembic is the defacto migration tool for use with SQLAlchemy. Without extensions, alembic can detect local changes to SQLAlchemy models and autogenerate a database migration or "revision" script. That revision can be applied to update the database's schema to match the SQLAlchemy model definitions.
Alembic Utils is an extension to alembic that adds support for autogenerating a larger number of PostgreSQL entity types, including functions, views, materialized views, triggers, and policies.
TL;DR
Update alembic's env.py to register a function or view:
# migrations/env.py
from alembic_utils.pg_function import PGFunction
from alembic_utils.replaceable_entity import register_entities
to_upper = PGFunction(
schema='public',
signature='to_upper(some_text text)',
definition="""
RETURNS text as
$$
SELECT upper(some_text)
$$ language SQL;
"""
)
register_entities([to_upper])
You're done!
The next time you autogenerate a revision with
alembic revision --autogenerate -m 'create to_upper'
Alembic will detect if your entities are new, updated, or removed & populate the revison's upgrade and downgrade sections automatically.
For example:
"""create to_upper
Revision ID: 8efi0da3a4
Revises:
Create Date: 2020-04-22 09:24:25.556995
"""
from alembic import op
import sqlalchemy as sa
from alembic_utils.pg_function import PGFunction
# revision identifiers, used by Alembic.
revision = '8efi0da3a4'
down_revision = None
branch_labels = None
depends_on = None
def upgrade():
public_to_upper_6fa0de = PGFunction(
schema="public",
signature="to_upper(some_text text)",
definition="""
returns text
as
$$ select upper(some_text) $$ language SQL;
"""
)
op.create_entity(public_to_upper_6fa0de)
def downgrade():
public_to_upper_6fa0de = PGFunction(
schema="public",
signature="to_upper(some_text text)",
definition="# Not Used"
)
op.drop_entity(public_to_upper_6fa0de)
Visit the quickstart guide for usage instructions.
—— ——
Contributing
To run the tests
# install pip dependencies
pip install wheel && pip install -e ".[dev]"
# run the tests
pytest src/test
To invoke the linter automated formatting and generally make use of precommit checks:
pip install pre-commit
pre-commit install
# manually run
pre-commit run --all
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
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 alembic_utils-0.8.8.tar.gz.
File metadata
- Download URL: alembic_utils-0.8.8.tar.gz
- Upload date:
- Size: 21.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.9.19 Darwin/24.0.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99de5d13194f26536bc0322f0c1660020a305015700d8447ccfc20e7d1494e5b
|
|
| MD5 |
cc6fb6d8710ca8c93f7b384b17a5e70e
|
|
| BLAKE2b-256 |
ec7aeae622a97ba1721fd7e420c60060a74852b800ac1fecbaa2e67a35941d6d
|
File details
Details for the file alembic_utils-0.8.8-py3-none-any.whl.
File metadata
- Download URL: alembic_utils-0.8.8-py3-none-any.whl
- Upload date:
- Size: 31.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.9.19 Darwin/24.0.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c2545dc545833c5deb63bce2c3cde01c1807bf99da5efab2497bc8d817cb86e
|
|
| MD5 |
5079ebf82f459433f878f54d9ae141c4
|
|
| BLAKE2b-256 |
dd01d55bd80997df2ec1ff2fd40cd3eeadec93c4b3c5492df3c6852b29f9e393
|