diff options
Diffstat (limited to 'lib/sqlalchemy/sql/compiler.py')
| -rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index cdb680431..4e73221c1 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -775,6 +775,9 @@ class SchemaGenerator(DDLBase): self.add_foreignkey(alterable) def visit_table(self, table): + for listener in table.ddl_listeners['before-create']: + listener('before-create', table, self.connection) + for column in table.columns: if column.default is not None: self.traverse_single(column.default) @@ -803,10 +806,14 @@ class SchemaGenerator(DDLBase): self.append("\n)%s\n\n" % self.post_create_table(table)) self.execute() + if hasattr(table, 'indexes'): for index in table.indexes: self.traverse_single(index) + for listener in table.ddl_listeners['after-create']: + listener('after-create', table, self.connection) + def post_create_table(self, table): return '' @@ -892,6 +899,7 @@ class SchemaGenerator(DDLBase): string.join([preparer.quote(c, c.name) for c in index.columns], ', '))) self.execute() + class SchemaDropper(DDLBase): def __init__(self, dialect, connection, checkfirst=False, tables=None, **kwargs): super(SchemaDropper, self).__init__(connection, **kwargs) @@ -919,6 +927,9 @@ class SchemaDropper(DDLBase): self.execute() def visit_table(self, table): + for listener in table.ddl_listeners['before-drop']: + listener('before-drop', table, self.connection) + for column in table.columns: if column.default is not None: self.traverse_single(column.default) @@ -926,6 +937,10 @@ class SchemaDropper(DDLBase): self.append("\nDROP TABLE " + self.preparer.format_table(table)) self.execute() + for listener in table.ddl_listeners['after-drop']: + listener('after-drop', table, self.connection) + + class IdentifierPreparer(object): """Handle quoting and case-folding of identifiers based on options.""" |
