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.
This commit is contained in:
parent
28d2ca21d5
commit
5cfc74959f
@ -150,25 +150,23 @@ class ModelGenerator(object):
|
|||||||
|
|
||||||
for tableName in self.diff.tables_different:
|
for tableName in self.diff.tables_different:
|
||||||
dbTable = self.diff.metadataB.tables[tableName]
|
dbTable = self.diff.metadataB.tables[tableName]
|
||||||
missingInDatabase, missingInModel, diffDecl = \
|
td = self.diff.tables_different[tableName]
|
||||||
self.diff.colDiffs[tableName]
|
for col in td.columns_missing_from_A:
|
||||||
for col in missingInDatabase:
|
upgradeCommands.append('%s.append_column(%s)' % (
|
||||||
upgradeCommands.append('%s.columns[%r].create()' % (
|
tableName,
|
||||||
modelTable, col.name))
|
self.column_repr(
|
||||||
downgradeCommands.append('%s.columns[%r].drop()' % (
|
self.diff.metadataB.tables[tableName].columns[col])))
|
||||||
modelTable, col.name))
|
downgradeCommands.append('%s.columns[%r].drop()' % (tableName, col))
|
||||||
for col in missingInModel:
|
for col in td.columns_missing_from_B:
|
||||||
upgradeCommands.append('%s.columns[%r].drop()' % (
|
upgradeCommands.append('%s.columns[%r].drop()' % (tableName, col))
|
||||||
modelTable, col.name))
|
downgradeCommands.append('%s.columns[%r].create()' % (tableName, col))
|
||||||
downgradeCommands.append('%s.columns[%r].create()' % (
|
for modelCol, databaseCol, modelDecl, databaseDecl in td.columns_different:
|
||||||
modelTable, col.name))
|
|
||||||
for modelCol, databaseCol, modelDecl, databaseDecl in diffDecl:
|
|
||||||
upgradeCommands.append(
|
upgradeCommands.append(
|
||||||
'assert False, "Can\'t alter columns: %s:%s=>%s"' % (
|
'assert False, "Can\'t alter columns: %s:%s=>%s"' % (
|
||||||
modelTable, modelCol.name, databaseCol.name))
|
tableName, modelCol.name, databaseCol.name))
|
||||||
downgradeCommands.append(
|
downgradeCommands.append(
|
||||||
'assert False, "Can\'t alter columns: %s:%s=>%s"' % (
|
'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'
|
pre_command = ' meta.bind = migrate_engine'
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@ -246,3 +244,4 @@ class ModelGenerator(object):
|
|||||||
except:
|
except:
|
||||||
trans.rollback()
|
trans.rollback()
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user