96 lines
6 KiB
Text
96 lines
6 KiB
Text
Metadata-Version: 1.1
|
|
Name: alembic
|
|
Version: 0.6.5
|
|
Summary: A database migration tool for SQLAlchemy.
|
|
Home-page: http://bitbucket.org/zzzeek/alembic
|
|
Author: Mike Bayer
|
|
Author-email: mike@zzzcomputing.com
|
|
License: MIT
|
|
Description: Alembic is a new database migrations tool, written by the author
|
|
of `SQLAlchemy <http://www.sqlalchemy.org>`_. A migrations tool
|
|
offers the following functionality:
|
|
|
|
* Can emit ALTER statements to a database in order to change
|
|
the structure of tables and other constructs
|
|
* Provides a system whereby "migration scripts" may be constructed;
|
|
each script indicates a particular series of steps that can "upgrade" a
|
|
target database to a new version, and optionally a series of steps that can
|
|
"downgrade" similarly, doing the same steps in reverse.
|
|
* Allows the scripts to execute in some sequential manner.
|
|
|
|
The goals of Alembic are:
|
|
|
|
* Very open ended and transparent configuration and operation. A new
|
|
Alembic environment is generated from a set of templates which is selected
|
|
among a set of options when setup first occurs. The templates then deposit a
|
|
series of scripts that define fully how database connectivity is established
|
|
and how migration scripts are invoked; the migration scripts themselves are
|
|
generated from a template within that series of scripts. The scripts can
|
|
then be further customized to define exactly how databases will be
|
|
interacted with and what structure new migration files should take.
|
|
* Full support for transactional DDL. The default scripts ensure that all
|
|
migrations occur within a transaction - for those databases which support
|
|
this (Postgresql, Microsoft SQL Server), migrations can be tested with no
|
|
need to manually undo changes upon failure.
|
|
* Minimalist script construction. Basic operations like renaming
|
|
tables/columns, adding/removing columns, changing column attributes can be
|
|
performed through one line commands like alter_column(), rename_table(),
|
|
add_constraint(). There is no need to recreate full SQLAlchemy Table
|
|
structures for simple operations like these - the functions themselves
|
|
generate minimalist schema structures behind the scenes to achieve the given
|
|
DDL sequence.
|
|
* "auto generation" of migrations. While real world migrations are far more
|
|
complex than what can be automatically determined, Alembic can still
|
|
eliminate the initial grunt work in generating new migration directives
|
|
from an altered schema. The ``--autogenerate`` feature will inspect the
|
|
current status of a database using SQLAlchemy's schema inspection
|
|
capabilities, compare it to the current state of the database model as
|
|
specified in Python, and generate a series of "candidate" migrations,
|
|
rendering them into a new migration script as Python directives. The
|
|
developer then edits the new file, adding additional directives and data
|
|
migrations as needed, to produce a finished migration. Table and column
|
|
level changes can be detected, with constraints and indexes to follow as
|
|
well.
|
|
* Full support for migrations generated as SQL scripts. Those of us who
|
|
work in corporate environments know that direct access to DDL commands on a
|
|
production database is a rare privilege, and DBAs want textual SQL scripts.
|
|
Alembic's usage model and commands are oriented towards being able to run a
|
|
series of migrations into a textual output file as easily as it runs them
|
|
directly to a database. Care must be taken in this mode to not invoke other
|
|
operations that rely upon in-memory SELECTs of rows - Alembic tries to
|
|
provide helper constructs like bulk_insert() to help with data-oriented
|
|
operations that are compatible with script-based DDL.
|
|
* Non-linear versioning. Scripts are given UUID identifiers similarly
|
|
to a DVCS, and the linkage of one script to the next is achieved via markers
|
|
within the scripts themselves. Through this open-ended mechanism, branches
|
|
containing other migration scripts can be merged - the linkages can be
|
|
manually edited within the script files to create the new sequence.
|
|
* Provide a library of ALTER constructs that can be used by any SQLAlchemy
|
|
application. The DDL constructs build upon SQLAlchemy's own DDLElement base
|
|
and can be used standalone by any application or script.
|
|
* Don't break our necks over SQLite's inability to ALTER things. SQLite
|
|
has almost no support for table or column alteration, and this is likely
|
|
intentional. Alembic's design
|
|
is kept simple by not contorting its core API around these limitations,
|
|
understanding that SQLite is simply not intended to support schema
|
|
changes. While Alembic's architecture can support SQLite's workarounds, and
|
|
we will support these features provided someone takes the initiative
|
|
to implement and test, until the SQLite developers decide
|
|
to provide a fully working version of ALTER, it's still vastly preferable
|
|
to use Alembic, or any migrations tool, with databases that
|
|
are designed to work under the assumption of in-place schema migrations
|
|
taking place.
|
|
|
|
Documentation and status of Alembic is at http://readthedocs.org/docs/alembic/.
|
|
|
|
|
|
Keywords: SQLAlchemy migrations
|
|
Platform: UNKNOWN
|
|
Classifier: Development Status :: 4 - Beta
|
|
Classifier: Environment :: Console
|
|
Classifier: Intended Audience :: Developers
|
|
Classifier: Programming Language :: Python
|
|
Classifier: Programming Language :: Python :: 3
|
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
Classifier: Topic :: Database :: Front-Ends
|