Skip to main content

automigrate

Automigrate is a command-line tool for SQL migrations. Unlike other migration tools, it uses git history to do diffs on create table statements instead of storing the migration history in a folder somewhere.

How is this different

This tool uses git history to infer database migrations, and uses git SHAs to version production databases.

Other schema migration tools typically work by diffing ORM definitions against a live database (which can be your local DB). Often these diffs are then checked into a folder in your project repo.

Seriously, all you have to do is maintain a file like this:

-- schema.sql
create table whatever (
  userid uuid primary key,
  age_at_birth int default 0
);

And when you add a field to the create table statement, automig figures out the 'alter table'.

Usage

If you're using postgres:

pip install automig[postgres]
# set an environment var with postgres connection details
export AUTOMIG_CON=postgresql://postgres:$PGPASSWORD@host
# initialize the postgres DB to schema/*.sql -- do this once to create a DB
automig_pg --glob 'schema/*.sql' init
# update your DB to whatever sha is at git HEAD -- do this whenever your schema changes
automig_pg --glob 'schema/*.sql' update
# do a dry-run, show the output without applying it
automig_pg --preview --glob 'schema/*.sql' update

If you're using another database, you can get the raw SQL for these actions by using the automig tool instead of automig_pg. (docs coming soon).

Postgres is the primary database I test on, with sqlite support secondary.

Advanced features

  • Instructions for doing kube-native migrations are in the kube folder.
  • Lambda support: you'll need to bundle a binary version of git that's compatible with amazonlinux. Post an issue if you need help with this.
  • You can skip over bad diffs using --opaque mode, docs coming soon
  • You can specify manual overrides for erroring diffs, or skip over whole shas, by using .manualmig.yml file. docs coming soon but in the meantime look inside that file for an example.
  • Convert an existing DB to use automig -- please post a github issue if you have this issue and I'll add instructions

Generate ORM definitions from SQL

Experimental sqlalchemy generator in sa_harness.py. Try it out with:

python -m automig.lib.sa_harness 'test/schema/*.sql'

Metadata

Release files for automig 0.1.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for automig 0.1.8
File Size Uploaded
automig-0.1.8.tar.gz 19.8 kB Details

Release files / automig-0.1.8.tar.gz

Download URL automig-0.1.8.tar.gz
Size 19.8 kB
Tags Source
SHA-256 checksum
How to use checksums
044c4f7b320d543c65a848453512a49023f89015adbfc6fb31031adc8d8c2e04
BLAKE2b-256 checksum
How to use checksums
75fd325ed107d4332fae3af5197b49f643b5f96e4fe042998a41dd25dc815460
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.8.5

Release history Release notifications | RSS feed

This release

0.1.8 This release

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

0.0.21

1 release file

0.0.20

1 release file

0.0.19

1 release file

0.0.18

1 release file

0.0.17

1 release file

0.0.16

1 release file

0.0.15

1 release file

0.0.14

1 release file

0.0.13

1 release file

0.0.12

1 release file

0.0.11

1 release file

0.0.10

1 release file

0.0.9

1 release file

0.0.8

1 release file

0.0.7

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page