diff options
author | percious17 <unknown> | 2009-01-19 23:39:53 +0000 |
---|---|---|
committer | percious17 <unknown> | 2009-01-19 23:39:53 +0000 |
commit | cb624f15db39de58d9e317126403469e4230d8a9 (patch) | |
tree | a51451348aa796613c5f4a14ddd62a6febb76140 /migrate/changeset/ansisql.py | |
parent | 88ab816187e77b9258b336e1a3e5f92f27c63766 (diff) | |
download | sqlalchemy-migrate-cb624f15db39de58d9e317126403469e4230d8a9.tar.gz |
support for SA 0.5.1.
Only postgres is working fully.
MySQL has 2 broken tests.
sqlite has about 4 broken tests.
Diffstat (limited to 'migrate/changeset/ansisql.py')
-rw-r--r-- | migrate/changeset/ansisql.py | 41 |
1 files changed, 33 insertions, 8 deletions
diff --git a/migrate/changeset/ansisql.py b/migrate/changeset/ansisql.py index e188100..4c721e8 100644 --- a/migrate/changeset/ansisql.py +++ b/migrate/changeset/ansisql.py @@ -22,7 +22,7 @@ class RawAlterTableVisitor(object): if isinstance(ret,sa.Table): ret = ret.fullname return ret - + def _do_quote_table_identifier(self, identifier): return '"%s"'%identifier @@ -81,12 +81,16 @@ class ANSIColumnGenerator(AlterTableVisitor,SchemaGenerator): pks = table.primary_key colspec = self.get_column_specification(column) self.append(colspec) - if column.foreign_keys: - for fk in column.foreign_keys: - self.append(";\n\t ") - self.add_foreignkey(fk.constraint) - else: - self.execute() + +# if column.foreign_keys: +# self.append(" ") +# for fk in column.foreign_keys: +# self.add_foreignkey(fk.constraint) +# continue +# self.append(";\n\t ") +# self.define_foreign_key(fk.constraint) +# else: + self.execute() def visit_table(self,table): @@ -283,14 +287,35 @@ class ANSIConstraintDropper(ANSIConstraintCommon): def visit_migrate_foreign_key_constraint(self,*p,**k): return self._visit_constraint(*p,**k) - + def visit_migrate_check_constraint(self,*p,**k): return self._visit_constraint(*p,**k) +class ANSIFKGenerator(AlterTableVisitor,SchemaGenerator): + """Extends ansisql generator for column creation (alter table add col)""" + def __init__(self, *args, **kwargs): + self.fk = kwargs.get('fk', None) + if self.fk: + del kwargs['fk'] + super(ANSIFKGenerator, self).__init__(*args, **kwargs) + + def visit_column(self,column): + """Create foreign keys for a column (table already exists); #32""" + + if self.fk: + self.add_foreignkey(self.fk.constraint) + + if self.buffer.getvalue() !='': + self.execute() + + def visit_table(self,table): + pass + class ANSIDialect(object): columngenerator = ANSIColumnGenerator columndropper = ANSIColumnDropper schemachanger = ANSISchemaChanger + columnfkgenerator = ANSIFKGenerator @classmethod def visitor(self,name): |