diff options
author | iElectric <unknown> | 2009-06-22 10:22:06 +0000 |
---|---|---|
committer | iElectric <unknown> | 2009-06-22 10:22:06 +0000 |
commit | a8c31eb25f89542c9be72d0a8f90b4d984b6aead (patch) | |
tree | 8c56225780ea545c5a86d10a1964f4aa672d1aa1 /migrate/changeset/databases/firebird.py | |
parent | 17cc5f36e6f1463fbb0b9ad912f5c5dc983e08a8 (diff) | |
download | sqlalchemy-migrate-a8c31eb25f89542c9be72d0a8f90b4d984b6aead.tar.gz |
adding basic support for firebird, fixes #55
Diffstat (limited to 'migrate/changeset/databases/firebird.py')
-rw-r--r-- | migrate/changeset/databases/firebird.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/migrate/changeset/databases/firebird.py b/migrate/changeset/databases/firebird.py new file mode 100644 index 0000000..215762c --- /dev/null +++ b/migrate/changeset/databases/firebird.py @@ -0,0 +1,62 @@ +""" + Firebird database specific implementations of changeset classes. +""" +from sqlalchemy.databases import firebird as sa_base + +from migrate.changeset import ansisql, exceptions + + +FBSchemaGenerator = sa_base.FBSchemaGenerator + + +class FBColumnGenerator(FBSchemaGenerator, ansisql.ANSIColumnGenerator): + """Firebird column generator implementation.""" + + +class FBColumnDropper(ansisql.ANSIColumnDropper): + """Firebird column dropper implementation.""" + + def visit_column(self, column): + table = self.start_alter_table(column) + self.append('DROP %s' % self.preparer.format_column(column)) + self.execute() + + +class FBSchemaChanger(ansisql.ANSISchemaChanger): + """Firebird schema changer implementation.""" + + def visit_table(self, table): + """Rename table not supported""" + raise exceptions.NotSupportedError( + "Firebird does not support renaming tables.") + + def _visit_column_name(self, table, col_name, delta): + new_name = delta['name'] + self.start_alter_table(table) + self.append('ALTER COLUMN %s TO %s' % ((col_name), (new_name))) + + def _visit_column_nullable(self, table, col_name, delta): + """Changing NULL is not supported""" + # TODO: http://www.firebirdfaq.org/faq103/ + raise exceptions.NotSupportedError( + "Firebird does not support altering NULL bevahior.") + + +class FBConstraintGenerator(ansisql.ANSIConstraintGenerator): + """Firebird constraint generator implementation.""" + + +class FBConstraintDropper(ansisql.ANSIConstraintDropper): + """Firebird constaint dropper implementation.""" + + def cascade_constraint(self, constraint): + raise exceptions.NotSupportedError( + "Firebird does not support cascading constraints") + + +class FBDialect(ansisql.ANSIDialect): + columngenerator = FBColumnGenerator + columndropper = FBColumnDropper + schemachanger = FBSchemaChanger + constraintgenerator = FBConstraintGenerator + constraintdropper = FBConstraintDropper |