From: Mike Bayer Date: Wed, 13 Nov 2013 15:08:23 +0000 (-0500) Subject: move _get_index_column_names into autogenerate X-Git-Tag: rel_0_6_1~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aef7c4c7a4f1dcb5037d77e448e3a81a3bdeb89c;p=thirdparty%2Fsqlalchemy%2Falembic.git move _get_index_column_names into autogenerate --- diff --git a/alembic/autogenerate/compare.py b/alembic/autogenerate/compare.py index ce3bc675..3b2e1d76 100644 --- a/alembic/autogenerate/compare.py +++ b/alembic/autogenerate/compare.py @@ -1,7 +1,7 @@ from sqlalchemy.exc import NoSuchTableError from sqlalchemy import schema as sa_schema, types as sqltypes import logging -from ..compat import get_index_column_names +from .. import compat from .render import _render_server_default from sqlalchemy.util import OrderedSet @@ -221,10 +221,18 @@ def _compare_uniques(schema, tname, object_filters, conn_table, # deduplication return c_keys +def _get_index_column_names(idx): + if compat.sqla_08: + return [exp.name for exp in idx.expressions] + else: + return [col.name for col in idx.columns] + def _compare_indexes(schema, tname, object_filters, conn_table, metadata_table, diffs, autogen_context, inspector, c_uniques_keys): + + try: reflected_indexes = inspector.get_indexes(tname) except NoSuchTableError: @@ -259,7 +267,7 @@ def _compare_indexes(schema, tname, object_filters, conn_table, diffs.append(("add_index", meta)) log.info("Detected added index '%s' on %s", key, ', '.join([ - "'%s'" % get_index_column_names(meta) + "'%s'" % _get_index_column_names(meta) ]) ) @@ -272,8 +280,8 @@ def _compare_indexes(schema, tname, object_filters, conn_table, conn_index = c_objs[key] # TODO: why don't we just render the DDL here # so we can compare the string output fully - conn_exps = get_index_column_names(conn_index) - meta_exps = get_index_column_names(meta_index) + conn_exps = _get_index_column_names(conn_index) + meta_exps = _get_index_column_names(meta_index) # convert between both Nones (SQLA ticket #2825) on the metadata # side and zeroes on the reflection side. diff --git a/alembic/autogenerate/render.py b/alembic/autogenerate/render.py index 0f31dbca..610a4d47 100644 --- a/alembic/autogenerate/render.py +++ b/alembic/autogenerate/render.py @@ -2,9 +2,7 @@ from sqlalchemy import schema as sa_schema, types as sqltypes, sql import logging from .. import compat import re - - -from ..compat import string_types, get_index_column_names +from ..compat import string_types log = logging.getLogger(__name__) @@ -56,10 +54,12 @@ def _add_index(index, autogen_context): Generate Alembic operations for the CREATE INDEX of an :class:`~sqlalchemy.schema.Index` instance. """ + from .compare import _get_index_column_names + text = "op.create_index('%(name)s', '%(table)s', %(columns)s, unique=%(unique)r%(schema)s%(kwargs)s)" % { 'name': index.name, 'table': index.table, - 'columns': get_index_column_names(index), + 'columns': _get_index_column_names(index), 'unique': index.unique or False, 'schema': (", schema='%s'" % index.table.schema) if index.table.schema else '', 'kwargs': (', '+', '.join( diff --git a/alembic/compat.py b/alembic/compat.py index 0f066aa9..6e694186 100644 --- a/alembic/compat.py +++ b/alembic/compat.py @@ -67,13 +67,6 @@ except AttributeError: def exec_(func_text, globals_, lcl): exec('exec func_text in globals_, lcl') -if sa_version >= '0.8.0': - def get_index_column_names(idx): - return [exp.name for exp in idx.expressions] -else: - def get_index_column_names(idx): - return [col.name for col in idx.columns] - ################################################ # cross-compatible metaclass implementation # Copyright (c) 2010-2012 Benjamin Peterson