Skip to content

Releases: sqlalchemy/alembic

0.2.0

17 Sep 22:11
Compare
Choose a tag to compare

0.2.0

Released: Mon Jan 30 2012

  • [feature] API rearrangement allows everything
    Alembic does to be represented by contextual
    objects, including EnvironmentContext,
    MigrationContext, and Operations. Other
    libraries and applications can now use
    things like "alembic.op" without relying
    upon global configuration variables.
    The rearrangement was done such that
    existing migrations should be OK,
    as long as they use the pattern
    of "from alembic import context" and
    "from alembic import op", as these
    are now contextual objects, not modules.

    References: #19

  • [feature] The naming of revision files can
    now be customized to be some combination
    of "rev id" and "slug", the latter of which
    is based on the revision message.
    By default, the pattern "_"
    is used for new files. New script files
    should include the "revision" variable
    for this to work, which is part of
    the newer script.py.mako scripts.

    References: #24

  • [bug] env.py templates call
    connection.close() to better support
    programmatic usage of commands; use
    NullPool in conjunction with create_engine()
    as well so that no connection resources
    remain afterwards.

    References: #25

  • [bug] fix the config.main() function to honor
    the arguments passed, remove no longer used
    "scripts/alembic" as setuptools creates this
    for us.

    References: #22

  • [bug] Fixed alteration of column type on
    MSSQL to not include the keyword "TYPE".

  • [feature] Can create alembic.config.Config
    with no filename, use set_main_option()
    to add values. Also added set_section_option()
    which will add sections.

    References: #23

0.1.1

17 Sep 22:11
Compare
Choose a tag to compare

0.1.1

Released: Wed Jan 04 2012

  • [bug] Clean up file write operations so that
    file handles are closed.

  • [feature] PyPy is supported.

  • [feature] Python 2.5 is supported, needs
    future.with_statement

  • [bug] Fix autogenerate so that "pass" is
    generated between the two comments
    if no net migrations were present.

  • [bug] Fix autogenerate bug that prevented
    correct reflection of a foreign-key
    referenced table in the list of "to remove".

    References: #16

  • [bug] Fix bug where create_table() didn't
    handle self-referential foreign key
    correctly

    References: #17

  • [bug] Default prefix for autogenerate
    directives is "op.", matching the
    mako templates.

    References: #18

  • [feature] Add alembic_module_prefix argument
    to configure() to complement
    sqlalchemy_module_prefix.

    References: #18

  • [bug] fix quotes not being rendered in
    ForeignKeConstraint during
    autogenerate

    References: #14

0.1.0

17 Sep 22:11
Compare
Choose a tag to compare

0.1.0

Released: Wed Nov 30 2011

  • Initial release. Status of features:

  • Alembic is used in at least one production
    environment, but should still be considered
    ALPHA LEVEL SOFTWARE as of this release,
    particularly in that many features are expected
    to be missing / unimplemented. Major API
    changes are not anticipated but for the moment
    nothing should be assumed.

    The author asks that you please report all
    issues, missing features, workarounds etc.
    to the bugtracker.

  • Python 3 is supported and has been tested.

  • The "Pylons" and "MultiDB" environment templates
    have not been directly tested - these should be
    considered to be samples to be modified as
    needed. Multiple database support itself
    is well tested, however.

  • Postgresql and MS SQL Server environments
    have been tested for several weeks in a production
    environment. In particular, some involved workarounds
    were implemented to allow fully-automated dropping
    of default- or constraint-holding columns with
    SQL Server.

  • MySQL support has also been implemented to a
    basic degree, including MySQL's awkward style
    of modifying columns being accommodated.

  • Other database environments not included among
    those three have not been tested, at all. This
    includes Firebird, Oracle, Sybase. Adding
    support for these backends should be
    straightforward. Please report all missing/
    incorrect behaviors to the bugtracker! Patches
    are welcome here but are optional - please just
    indicate the exact format expected by the target
    database.

  • SQLite, as a backend, has almost no support for
    schema alterations to existing databases. The author
    would strongly recommend that SQLite not be used in
    a migration context - just dump your SQLite database
    into an intermediary format, then dump it back
    into a new schema. For dev environments, the
    dev installer should be building the whole DB from
    scratch. Or just use Postgresql, which is a much
    better database for non-trivial schemas.
    Requests for full ALTER support on SQLite should be
    reported to SQLite's bug tracker at
    http://www.sqlite.org/src/wiki?name=Bug+Reports,
    as Alembic will not be implementing the
    "rename the table to a temptable then copy the
    data into a new table" workaround.
    Note that Alembic will at some point offer an
    extensible API so that you can implement commands
    like this yourself.

  • Well-tested directives include add/drop table, add/drop
    column, including support for SQLAlchemy "schema"
    types which generate additional CHECK
    constraints, i.e. Boolean, Enum. Other directives not
    included here have not been strongly tested
    in production, i.e. rename table, etc.

  • Both "online" and "offline" migrations, the latter
    being generated SQL scripts to hand off to a DBA,
    have been strongly production tested against
    Postgresql and SQL Server.

  • Modify column type, default status, nullable, is
    functional and tested across PG, MSSQL, MySQL,
    but not yet widely tested in production usage.

  • Many migrations are still outright missing, i.e.
    create/add sequences, etc. As a workaround,
    execute() can be used for those which are missing,
    though posting of tickets for new features/missing
    behaviors is strongly encouraged.

  • Autogenerate feature is implemented and has been
    tested, though only a little bit in a production setting.
    In particular, detection of type and server
    default changes are optional and are off by default;
    they can also be customized by a callable.
    Both features work but can have surprises particularly
    the disparity between BIT/TINYINT and boolean,
    which hasn't yet been worked around, as well as
    format changes performed by the database on defaults
    when it reports back. When enabled, the PG dialect
    will execute the two defaults to be compared to
    see if they are equivalent. Other backends may
    need to do the same thing.

    The autogenerate feature only generates
    "candidate" commands which must be hand-tailored
    in any case, so is still a useful feature and
    is safe to use. Please report missing/broken features
    of autogenerate! This will be a great feature and
    will also improve SQLAlchemy's reflection services.

  • Support for non-ASCII table, column and constraint
    names is mostly nonexistent. This is also a
    straightforward feature add as SQLAlchemy itself
    supports unicode identifiers; Alembic itself will
    likely need fixes to logging, column identification
    by key, etc. for full support here.