diff options
author | Chris Withers <chris@simplistix.co.uk> | 2010-09-16 20:58:15 +0100 |
---|---|---|
committer | Chris Withers <chris@simplistix.co.uk> | 2010-09-16 20:58:15 +0100 |
commit | 27cf184b50ceed185fea57abfb329d2b9f9da935 (patch) | |
tree | 19eeec4a77e1dc821ddab6961356400a02ca4c11 /lib/sqlalchemy/schema.py | |
parent | fd6c85cf7f9918cc14d555495d8a08f5373b0d0b (diff) | |
download | sqlalchemy-27cf184b50ceed185fea57abfb329d2b9f9da935.tar.gz |
tometadata now copies indexes as well
Diffstat (limited to 'lib/sqlalchemy/schema.py')
-rw-r--r-- | lib/sqlalchemy/schema.py | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/sqlalchemy/schema.py b/lib/sqlalchemy/schema.py index e61f17d8e..fc5dd33df 100644 --- a/lib/sqlalchemy/schema.py +++ b/lib/sqlalchemy/schema.py @@ -478,7 +478,28 @@ class Table(SchemaItem, expression.TableClause): args.append(c.copy(schema=schema)) for c in self.constraints: args.append(c.copy(schema=schema)) - return Table(self.name, metadata, schema=schema, *args, **self.kwargs) + table = Table( + self.name, metadata, schema=schema, + *args, **self.kwargs + ) + copied_already = set() + for i in table.indexes: + entry = [i.name,i.unique] + entry.extend(sorted(i.kwargs.items())) + entry.extend(i.columns.keys()) + copied_already.add(tuple(entry)) + for i in self.indexes: + cols = i.columns.keys() + entry = [i.name,i.unique] + entry.extend(sorted(i.kwargs.items())) + entry.extend(cols) + if tuple(entry) not in copied_already: + kwargs = dict(i.kwargs) + kwargs['unique']=i.unique + Index(i.name, + *[getattr(table.c,col) for col in cols], + **kwargs) + return table class Column(SchemaItem, expression.ColumnClause): """Represents a column in a database table.""" |