summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel <g2p.code+sqla@gmail.com>2011-07-04 21:50:55 +0200
committerGabriel <g2p.code+sqla@gmail.com>2011-07-04 21:50:55 +0200
commit5cfc74959f6f7cf0ff58693613ca410a256c3b4f (patch)
tree6d4fa952371e11ab3edeaf60e915810f3fbc50f4
parent28d2ca21d5e503324c515a89af888d84c713b59b (diff)
downloadsqalchemy-migrate-5cfc74959f6f7cf0ff58693613ca410a256c3b4f.tar.gz
Fix column creation in make_update_script_for_model.
Generating the script needs internal API updates: https://code.google.com/p/sqlalchemy-migrate/issues/detail?id=113 Getting the script to run needs the new columns defined: https://code.google.com/p/sqlalchemy-migrate/issues/detail?id=123 Table metadata represents the former state and does not contain the columns being added.
-rw-r--r--migrate/versioning/genmodel.py29
1 files changed, 14 insertions, 15 deletions
diff --git a/migrate/versioning/genmodel.py b/migrate/versioning/genmodel.py
index 826575a..6cb8e09 100644
--- a/migrate/versioning/genmodel.py
+++ b/migrate/versioning/genmodel.py
@@ -150,25 +150,23 @@ class ModelGenerator(object):
for tableName in self.diff.tables_different:
dbTable = self.diff.metadataB.tables[tableName]
- missingInDatabase, missingInModel, diffDecl = \
- self.diff.colDiffs[tableName]
- for col in missingInDatabase:
- upgradeCommands.append('%s.columns[%r].create()' % (
- modelTable, col.name))
- downgradeCommands.append('%s.columns[%r].drop()' % (
- modelTable, col.name))
- for col in missingInModel:
- upgradeCommands.append('%s.columns[%r].drop()' % (
- modelTable, col.name))
- downgradeCommands.append('%s.columns[%r].create()' % (
- modelTable, col.name))
- for modelCol, databaseCol, modelDecl, databaseDecl in diffDecl:
+ td = self.diff.tables_different[tableName]
+ for col in td.columns_missing_from_A:
+ upgradeCommands.append('%s.append_column(%s)' % (
+ tableName,
+ self.column_repr(
+ self.diff.metadataB.tables[tableName].columns[col])))
+ downgradeCommands.append('%s.columns[%r].drop()' % (tableName, col))
+ for col in td.columns_missing_from_B:
+ upgradeCommands.append('%s.columns[%r].drop()' % (tableName, col))
+ downgradeCommands.append('%s.columns[%r].create()' % (tableName, col))
+ for modelCol, databaseCol, modelDecl, databaseDecl in td.columns_different:
upgradeCommands.append(
'assert False, "Can\'t alter columns: %s:%s=>%s"' % (
- modelTable, modelCol.name, databaseCol.name))
+ tableName, modelCol.name, databaseCol.name))
downgradeCommands.append(
'assert False, "Can\'t alter columns: %s:%s=>%s"' % (
- modelTable, modelCol.name, databaseCol.name))
+ tableName, modelCol.name, databaseCol.name))
pre_command = ' meta.bind = migrate_engine'
return (
@@ -246,3 +244,4 @@ class ModelGenerator(object):
except:
trans.rollback()
raise
+