Skip to main content

A tool to apply pure SQL migrations to PostgreSQL databases at runtime.

Project description

itinerary

A tool to apply pure SQL migrations to PostgreSQL databases at runtime.

Itinerary uses PostgreSQL’s advisory locks feature to prevent multiple instances from running migrations simultaneously. As such, it’s suitable for use in horizontally scalable applications.

Installation

pip install itinerary

Usage

Put raw SQL files in your migration directory, e.g.:

migrations/0001_create_table.sql
migrations/0002_add_column.sql
migrations/0003_create_index.sql

Then run the auto_migrate function before your application starts.

Flask example

import itinerary
from flask import Flask
app = Flask(__name__)

if __name__ == '__main__':
    conn = psycopg2.connect(host='localhost')
    itinerary.auto_migrate(conn)
    app.run()

uWSGI example

import itinerary
from uwsgidecorators import postfork

@postfork
def migrate_db():
    conn = psycopg2.connect(host='localhost')
    itinerary.auto_migrate(conn)

Configuration

itinerary.auto_migrate(connection, path='migrations',
                       version_table='_version', lock_id=0)
  • path – Directory to scan for migration files.
  • version_table – Table to use to keep track of applied migrations. If it doesn’t exist, itinerary will create it.
  • lock_id – The key to use when acquiring and releasing a PostgreSQL advisory lock.

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

itinerary-1.0.1.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

itinerary-1.0.1-py3-none-any.whl (5.5 kB view details)

Uploaded Python 3

File details

Details for the file itinerary-1.0.1.tar.gz.

File metadata

  • Download URL: itinerary-1.0.1.tar.gz
  • Upload date:
  • Size: 3.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.1

File hashes

Hashes for itinerary-1.0.1.tar.gz
Algorithm Hash digest
SHA256 38028382f7ccdbe56d1914272fd29b9c3906d2fe629750fc382d9d8359555ce4
MD5 5a9525a20a6aa71a9af5cf7fd4feee8e
BLAKE2b-256 0de2cfb7d7208223dfb1e0f5ae8b0b7a38e5284c4cc6f90a833ca8431285a12e

See more details on using hashes here.

File details

Details for the file itinerary-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: itinerary-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 5.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.45.0 CPython/3.8.1

File hashes

Hashes for itinerary-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2643f4042832f9e060298a24ad0654138bf1ec97b3042da206d1594b53ab4562
MD5 62c368f6877aadd4a21a72d2369c8cc6
BLAKE2b-256 99731333cb3e4117a0fa29b10fe952c3f8ade29b271210aa3a2397a5bd6e90e2

See more details on using hashes here.

Supported by

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