Skip to main content

A DRY multi-database migration tool.

Project description

Database Versioner (dbv)

Database versioner to be used to version Postgres & Redshift

Features

  • Able to run db migrations in a single command
  • Manages current version of the database
  • Able to randomize password and store in AWS SSM
  • Useful for CICD deployments
  • Better than sharing data dump exports

Installation

This is a python module available through the pypi registry.

Before installing, download and install python. python 3 or higher is required.

Installation is done using the pip install command:

$ pip install syngenta_digital_dbv

or

$ pipenv install syngenta_digital_dbv

Basic Usage

Postgres/Redshift

import syngenta_digital_dbv

def some_func():
    syngenta_digital_dbv.version(
        engine='postgres',
        endpoint='localhost',
        database='dbv-postgis',
        port=5433,
        user='root',
        password='Lq4nKg&&TRhHv%7z',
        ssm_param='local-postgres-config',
        versions_directory='application/db_versions/version_number_files',
        reset_root=True
    )
Option Name Required Type Description
engine true string name of supported db engine (postgres)
endpoint true string url of your host db
database true string name of the database to connect to
port true int port of database (no defaults)
user true string root username for database access
password true string root password for database access
versions_directory true string directory where all you files can be found
ssm_param false string ssm param path you want to store your db configs
reset_root false boolean whether to reset the root password; will ignore if ssm_param not defined
seed false boolean whether to seed data (great for local development)
seed_directory false string directory where all you files can be found

Postgres/Redshift Example File Contents

CREATE TABLE users_a (
    id SERIAL PRIMARY KEY,
    "user" text,
    password text
);
CREATE TABLE foods_a (
    id SERIAL PRIMARY KEY,
    name text,
    calories text
);
ALTER TABLE foods_a ADD COLUMN user_id int;
ALTER TABLE foods_a ADD CONSTRAINT user_id FOREIGN KEY (user_id) REFERENCES users_a (id) MATCH FULL;

NOTE: File names must be unique and in order (i.e. 1.sql, 2.sql, etc or a.sql, b.sql, etc), this is how the package knows what order to run the files in

Mongo

import syngenta_digital_dbv

def some_func():
    syngenta_digital_dbv.version(
        engine='mongo',
        database='unit',
        user='root',
        password='Lq4nKg&&TRhHv%7z',
        endpoint='mongodb://localhost:27017/',
        versions_directory='tests/mocks/mongo/version_number_files',
        seed=True,
        seed_directory='tests/mocks/mongo/seed'
    )
Option Name Required Type Description
engine true string name of supported db engine (postgres)
endpoint true string url of your host db
database true string name of the database to connect to
user true string root username for database access
password true string root password for database access
versions_directory true string directory where all you files can be found
seed false boolean whether to seed data (great for local development)
seed_directory false string directory where all you files can be found

Mongo Example File Contents

[
    {
        "database": "unit",
        "collection": "test",
        "operation": "create_index",
        "query": "user_email",
        "params": {"background": true, "unique": true}
    },
    {
        "database": "unit",
        "collection": "test",
        "operation": "create_index",
        "query": [["first", 1], ["last", -1]],
        "params": {"name": "first_last"}
    }
]

NOTE: Full list of collection operations found here: https://pymongo.readthedocs.io/en/stable/api/pymongo/collection.html

NOTE: Databases and collections are automatically by mongo; no need to have specific commands to create them

NOTE: File names must be unique and in order (i.e. 1.json, 2.json, etc or a.json, b.json, etc), this is how the package knows what order to run the files in

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

syngenta_digital_dbv-0.0.9.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

syngenta_digital_dbv-0.0.9-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file syngenta_digital_dbv-0.0.9.tar.gz.

File metadata

  • Download URL: syngenta_digital_dbv-0.0.9.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.8.6

File hashes

Hashes for syngenta_digital_dbv-0.0.9.tar.gz
Algorithm Hash digest
SHA256 a1fcf7950f8fc32aa0d47bfb6b12aa07ddf79a7a3b8e4f88f9de46d350234e2f
MD5 f5f921b29d26e3e1d3cd2001d8400d09
BLAKE2b-256 418a857e402736ff9d5488c37eba49f50c2a6b55ed53b8c00db820da57cd7731

See more details on using hashes here.

File details

Details for the file syngenta_digital_dbv-0.0.9-py3-none-any.whl.

File metadata

File hashes

Hashes for syngenta_digital_dbv-0.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 e6198f1a695ccd86b41a803210ecd0a58b6e4cfb019638a24a60aefed1f253d1
MD5 5384b73a86271e2bca6408a5f749f9ee
BLAKE2b-256 2385f0c791f1919523f676a87b3440c55d0d5e8533e33fce324c9330ab28175c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page