summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/schema.py
diff options
context:
space:
mode:
authorChris Withers <chris@simplistix.co.uk>2010-09-16 20:58:15 +0100
committerChris Withers <chris@simplistix.co.uk>2010-09-16 20:58:15 +0100
commit27cf184b50ceed185fea57abfb329d2b9f9da935 (patch)
tree19eeec4a77e1dc821ddab6961356400a02ca4c11 /lib/sqlalchemy/schema.py
parentfd6c85cf7f9918cc14d555495d8a08f5373b0d0b (diff)
downloadsqlalchemy-27cf184b50ceed185fea57abfb329d2b9f9da935.tar.gz
tometadata now copies indexes as well
Diffstat (limited to 'lib/sqlalchemy/schema.py')
-rw-r--r--lib/sqlalchemy/schema.py23
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."""