summaryrefslogtreecommitdiff
path: root/migrate/changeset/schema.py
diff options
context:
space:
mode:
authorChris Withers <chris@simplistix.co.uk>2011-02-10 16:49:20 +0000
committerChris Withers <chris@simplistix.co.uk>2011-02-10 16:49:20 +0000
commitb5a02cb7cfc1b6c032df3fed7002e968c1932162 (patch)
tree9ffe1c6b2904f382d6662dd1d07e1278017f5ec6 /migrate/changeset/schema.py
parentc80120da555f41a9b2eff9310b5d4bda1d0c149e (diff)
downloadsqlalchemy-migrate-b5a02cb7cfc1b6c032df3fed7002e968c1932162.tar.gz
remove the alter_metadata feature
Diffstat (limited to 'migrate/changeset/schema.py')
-rw-r--r--migrate/changeset/schema.py87
1 files changed, 23 insertions, 64 deletions
diff --git a/migrate/changeset/schema.py b/migrate/changeset/schema.py
index 00e1a3e..8c4f458 100644
--- a/migrate/changeset/schema.py
+++ b/migrate/changeset/schema.py
@@ -29,9 +29,6 @@ __all__ = [
'ColumnDelta',
]
-DEFAULT_ALTER_METADATA = True
-
-
def create_column(column, table=None, *p, **kw):
"""Create a column, given the table.
@@ -109,19 +106,11 @@ def alter_column(*p, **k):
The :class:`~sqlalchemy.engine.base.Engine` to use for table
reflection and schema alterations.
- :param alter_metadata:
- If `True`, which is the default, the
- :class:`~sqlalchemy.schema.Column` will also modified.
- If `False`, the :class:`~sqlalchemy.schema.Column` will be left
- as it was.
-
:returns: A :class:`ColumnDelta` instance representing the change.
"""
- k.setdefault('alter_metadata', DEFAULT_ALTER_METADATA)
-
if 'table' not in k and isinstance(p[0], sqlalchemy.Column):
k['table'] = p[0].table
if 'engine' not in k:
@@ -188,11 +177,10 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem):
:param table: Table at which current Column should be bound to.\
If table name is given, reflection will be used.
:type table: string or Table instance
- :param alter_metadata: If True, it will apply changes to metadata.
- :type alter_metadata: bool
- :param metadata: If `alter_metadata` is true, \
- metadata is used to reflect table names into
- :type metadata: :class:`MetaData` instance
+
+ :param metadata: A :class:`MetaData` instance to store
+ reflected table names
+
:param engine: When reflecting tables, either engine or metadata must \
be specified to acquire engine object.
:type engine: :class:`Engine` instance
@@ -213,7 +201,6 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem):
__visit_name__ = 'column'
def __init__(self, *p, **kw):
- self.alter_metadata = kw.pop("alter_metadata", False)
self.meta = kw.pop("metadata", None)
self.engine = kw.pop("engine", None)
@@ -237,8 +224,7 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem):
self.apply_diffs(diffs)
def __repr__(self):
- return '<ColumnDelta altermetadata=%r, %s>' % (self.alter_metadata,
- super(ColumnDelta, self).__repr__())
+ return '<ColumnDelta %s>' % super(ColumnDelta, self).__repr__()
def __getitem__(self, key):
if key not in self.keys():
@@ -314,7 +300,7 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem):
self.result_column.type = self.result_column.type()
# add column to the table
- if self.table is not None and self.alter_metadata:
+ if self.table is not None:
self.result_column.add_to_table(self.table)
def are_column_types_eq(self, old_type, new_type):
@@ -376,38 +362,27 @@ class ColumnDelta(DictMixin, sqlalchemy.schema.SchemaItem):
def _set_table(self, table):
if isinstance(table, basestring):
- if self.alter_metadata:
- if not self.meta:
- raise ValueError("metadata must be specified for table"
- " reflection when using alter_metadata")
- meta = self.meta
- if self.engine:
- meta.bind = self.engine
- else:
- if not self.engine and not self.meta:
- raise ValueError("engine or metadata must be specified"
- " to reflect tables")
- if not self.engine:
- self.engine = self.meta.bind
- meta = sqlalchemy.MetaData(bind=self.engine)
+ if not self.engine and not self.meta:
+ raise ValueError("engine or metadata must be specified"
+ " to reflect tables")
+ if not self.meta:
+ self.meta = sqlalchemy.MetaData()
+ meta = self.meta
+ if self.engine:
+ meta.bind = self.engine
self._table = sqlalchemy.Table(table, meta, autoload=True)
elif isinstance(table, sqlalchemy.Table):
self._table = table
- if not self.alter_metadata:
- self._table.meta = sqlalchemy.MetaData(bind=self._table.bind)
def _get_result_column(self):
return getattr(self, '_result_column', None)
def _set_result_column(self, column):
- """Set Column to Table based on alter_metadata evaluation."""
+ """Set Column to Table."""
self.process_column(column)
if not hasattr(self, 'current_name'):
self.current_name = column.name
- if self.alter_metadata:
- self._result_column = column
- else:
- self._result_column = column.copy_fixed()
+ self._result_column = column
table = property(_get_table, _set_table)
result_column = property(_get_result_column, _set_result_column)
@@ -456,22 +431,18 @@ class ChangesetTable(object):
:param name: New name of the table.
:type name: string
- :param alter_metadata: If True, table will be removed from metadata
- :type alter_metadata: bool
:param connection: reuse connection istead of creating new one.
:type connection: :class:`sqlalchemy.engine.base.Connection` instance
"""
- self.alter_metadata = kwargs.pop('alter_metadata', DEFAULT_ALTER_METADATA)
engine = self.bind
self.new_name = name
visitorcallable = get_engine_visitor(engine, 'schemachanger')
run_single_visitor(engine, visitorcallable, self, connection, **kwargs)
# Fix metadata registration
- if self.alter_metadata:
- self.name = name
- self.deregister()
- self._set_parent(self.metadata)
+ self.name = name
+ self.deregister()
+ self._set_parent(self.metadata)
def _meta_key(self):
return sqlalchemy.schema._get_table_key(self.name, self.schema)
@@ -510,7 +481,6 @@ class ChangesetColumn(object):
`~migrate.changeset.constraint.UniqueConstraint` on this column.
:param primary_key_name: Creates :class:\
`~migrate.changeset.constraint.PrimaryKeyConstraint` on this column.
- :param alter_metadata: If True, column will be added to table object.
:param populate_default: If True, created column will be \
populated with defaults
:param connection: reuse connection istead of creating new one.
@@ -518,22 +488,19 @@ populated with defaults
:type index_name: string
:type unique_name: string
:type primary_key_name: string
- :type alter_metadata: bool
:type populate_default: bool
:type connection: :class:`sqlalchemy.engine.base.Connection` instance
:returns: self
"""
self.populate_default = populate_default
- self.alter_metadata = kwargs.pop('alter_metadata', DEFAULT_ALTER_METADATA)
self.index_name = index_name
self.unique_name = unique_name
self.primary_key_name = primary_key_name
for cons in ('index_name', 'unique_name', 'primary_key_name'):
self._check_sanity_constraints(cons)
- if self.alter_metadata:
- self.add_to_table(table)
+ self.add_to_table(table)
engine = self.table.bind
visitorcallable = get_engine_visitor(engine, 'columngenerator')
engine._run_visitor(visitorcallable, self, connection, **kwargs)
@@ -550,20 +517,16 @@ populated with defaults
``ALTER TABLE DROP COLUMN``, for most databases.
- :param alter_metadata: If True, column will be removed from table object.
- :type alter_metadata: bool
:param connection: reuse connection istead of creating new one.
:type connection: :class:`sqlalchemy.engine.base.Connection` instance
"""
- self.alter_metadata = kwargs.pop('alter_metadata', DEFAULT_ALTER_METADATA)
if table is not None:
self.table = table
engine = self.table.bind
visitorcallable = get_engine_visitor(engine, 'columndropper')
engine._run_visitor(visitorcallable, self, connection, **kwargs)
- if self.alter_metadata:
- self.remove_from_table(self.table, unset_table=False)
- self.table = None
+ self.remove_from_table(self.table, unset_table=False)
+ self.table = None
return self
def add_to_table(self, table):
@@ -642,18 +605,14 @@ class ChangesetIndex(object):
:param name: New name of the Index.
:type name: string
- :param alter_metadata: If True, Index object will be altered.
- :type alter_metadata: bool
:param connection: reuse connection istead of creating new one.
:type connection: :class:`sqlalchemy.engine.base.Connection` instance
"""
- self.alter_metadata = kwargs.pop('alter_metadata', DEFAULT_ALTER_METADATA)
engine = self.table.bind
self.new_name = name
visitorcallable = get_engine_visitor(engine, 'schemachanger')
engine._run_visitor(visitorcallable, self, connection, **kwargs)
- if self.alter_metadata:
- self.name = name
+ self.name = name
class ChangesetDefaultClause(object):