semvec/pypi-packages huggingface dataset:
sqlmigrate 1.0.0
Simple raw-SQL database schema migration tool.
License: Apache License, Version 2.0
Keywords: sql database schema migration evolution migrate sqlalchemy

sqlturk
=======

Overview
--------

This tool helps you to keep track and evolve your database schema (SQL).

It works like this. Whenever you make changes to the database schema you put them into a "migration" - simply an .sql file with a sequence of SQL statements.  Sqlturk keeps track of which migrations have been applied and runs them in a guaranteed order. 

Design
------

There are plenty of tools to approach the problem of database schema
migration. Here is how sqlturk is different:

* **one-way migrations**. There is no way to "rollback" a migration. In my
  experience, "downgrade" scripts are almost never used yet writing them adds considerable burden onto the developer. Their presense may add a false sense of security -- since they used so rarely there is a big chance they will not work properly anyway.

* **Python-agnostic**. Sqlturk operates in terms of SQL DDL. It does not work in terms of SQLAlchemy ORM models or Django's and thus it can be used in a much wider context. Plain SQL also means that a competent DBA who knows nothing about Python can author these scripts. Or they could be generated automatically by another tool.

* **no magic**. I wanted a tool that works in an obvious, easy-to-understand way. Changing database schema can have big consequences so it is important to be able to see what's going on. 

Not convinced? A couple of more sophisticated tools: `Django South <http://south.aeracode.org/wiki/Documentation>`_ and `sqlalchemy-migrate <http://code.google.com/p/sqlalchemy-migrate/>`_.

API usage
---------

Short example::

    >>> from sqlturk.migration import MigrationTool
    >>> tool = MigrationTool('sqlite:///:memory:', migration_dir='testmigrations')
    >>> tool.install() # create a database table to track schema changes
    >>> tool.find_migrations()
    ['1_foobar', '2_foobar_data', '10_foobar_delete']
    >>> tool.run_migrations()
    >>> tool.find_migrations() # check that all migrations have been applied
    []

Example migration scripts can be found
`in the sqlturk' source <http://bitbucket.org/max/sqlturk/src/tip/testmigrations/>`_. Sqlturk uses SQLAlchemy syntax to specify database connection string, see its `documentation <http://www.sqlalchemy.org/docs/05/dbengine.html#create-engine-url-arguments>`_ for details.

.. vim:set ft=rst tw=0: