diff options
Diffstat (limited to 'migrate/changeset/databases')
-rw-r--r-- | migrate/changeset/databases/firebird.py | 2 | ||||
-rw-r--r-- | migrate/changeset/databases/mysql.py | 6 | ||||
-rw-r--r-- | migrate/changeset/databases/sqlite.py | 6 | ||||
-rw-r--r-- | migrate/changeset/databases/visitor.py | 14 |
4 files changed, 20 insertions, 8 deletions
diff --git a/migrate/changeset/databases/firebird.py b/migrate/changeset/databases/firebird.py index 226728b..bbb4acd 100644 --- a/migrate/changeset/databases/firebird.py +++ b/migrate/changeset/databases/firebird.py @@ -31,7 +31,7 @@ class FBColumnDropper(ansisql.ANSIColumnDropper): if column.name in [col.name for col in index.columns]: index.drop() # TODO: recreate index if it references more than this column - + for cons in column.table.constraints: if isinstance(cons,PrimaryKeyConstraint): # will be deleted only when the column its on diff --git a/migrate/changeset/databases/mysql.py b/migrate/changeset/databases/mysql.py index 6987b4b..29518e2 100644 --- a/migrate/changeset/databases/mysql.py +++ b/migrate/changeset/databases/mysql.py @@ -2,11 +2,14 @@ MySQL database specific implementations of changeset classes. """ +import sqlalchemy from sqlalchemy.databases import mysql as sa_base from sqlalchemy import types as sqltypes from migrate import exceptions from migrate.changeset import ansisql +from migrate.changeset import util + MySQLSchemaGenerator = sa_base.MySQLDDLCompiler @@ -34,7 +37,8 @@ class MySQLSchemaChanger(MySQLSchemaGenerator, ansisql.ANSISchemaChanger): first = primary_keys.pop(0) if first.name == delta.current_name: colspec += " AUTO_INCREMENT" - old_col_name = self.preparer.quote(delta.current_name, table.quote) + q = util.safe_quote(table) + old_col_name = self.preparer.quote(delta.current_name, q) self.start_alter_table(table) diff --git a/migrate/changeset/databases/sqlite.py b/migrate/changeset/databases/sqlite.py index 5ddd3f1..6453422 100644 --- a/migrate/changeset/databases/sqlite.py +++ b/migrate/changeset/databases/sqlite.py @@ -42,7 +42,7 @@ class SQLiteHelper(SQLiteCommon): self.execute() self.append('DROP TABLE migration_tmp') self.execute() - + def visit_column(self, delta): if isinstance(delta, DictMixin): column = delta.result_column @@ -52,7 +52,7 @@ class SQLiteHelper(SQLiteCommon): table = self._to_table(column.table) self.recreate_table(table,column,delta) -class SQLiteColumnGenerator(SQLiteSchemaGenerator, +class SQLiteColumnGenerator(SQLiteSchemaGenerator, ansisql.ANSIColumnGenerator, # at the end so we get the normal # visit_column by default @@ -78,7 +78,7 @@ class SQLiteColumnDropper(SQLiteHelper, ansisql.ANSIColumnDropper): """SQLite ColumnDropper""" def _modify_table(self, table, column, delta): - + columns = ' ,'.join(map(self.preparer.format_column, table.columns)) return 'INSERT INTO %(table_name)s SELECT ' + columns + \ ' from migration_tmp' diff --git a/migrate/changeset/databases/visitor.py b/migrate/changeset/databases/visitor.py index 224c40f..c70aa6b 100644 --- a/migrate/changeset/databases/visitor.py +++ b/migrate/changeset/databases/visitor.py @@ -8,8 +8,7 @@ from migrate.changeset.databases import (sqlite, postgres, mysql, oracle, - firebird, - ibmdb2) + firebird) # Map SA dialects to the corresponding Migrate extensions @@ -21,10 +20,19 @@ DIALECTS = { "mysql": mysql.MySQLDialect, "oracle": oracle.OracleDialect, "firebird": firebird.FBDialect, - "ibm_db_sa": ibmdb2.IBMDBDialect } +# NOTE(mriedem): We have to conditionally check for DB2 in case ibm_db_sa +# isn't available since ibm_db_sa is not packaged in sqlalchemy like the +# other dialects. +try: + from migrate.changeset.databases import ibmdb2 + DIALECTS["ibm_db_sa"] = ibmdb2.IBMDBDialect +except ImportError: + pass + + def get_engine_visitor(engine, name): """ Get the visitor implementation for the given database engine. |